From c274b8ec28e227b3207a17841388b30879041a65 Mon Sep 17 00:00:00 2001
From: Mikael Meulle <21535-just_like_good_vibes@users.noreply.drupalcode.org>
Date: Wed, 16 Oct 2024 10:36:36 +0000
Subject: [PATCH] Issue #3479656 by just_like_good_vibes, sea2709: Performance
 issue when using the formatter "Component per item (UI Pattern)"

---
 .gitlab-ci.yml                                             | 2 ++
 ...ValidatorRuleTest.php => TwigValidatorRuleTestExpr.php} | 2 +-
 ...rRuleTestTest.php => TwigValidatorRuleTestExprTest.php} | 4 ++--
 .../tests/fixtures/tests.formatter.yml                     | 2 --
 src/Element/ComponentElementBuilder.php                    | 7 ++++---
 5 files changed, 9 insertions(+), 8 deletions(-)
 rename modules/ui_patterns_devel/src/Plugin/TwigValidatorRule/{TwigValidatorRuleTest.php => TwigValidatorRuleTestExpr.php} (98%)
 rename modules/ui_patterns_devel/tests/src/Kernel/TwigValidatorRule/{TwigValidatorRuleTestTest.php => TwigValidatorRuleTestExprTest.php} (93%)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 50e4d030c..ff039ba5f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -55,6 +55,8 @@ phpstan:
   allow_failure: false
 phpunit:
   allow_failure: false
+  variables:
+    _PHPUNIT_EXTRA: ''
 
 
 
diff --git a/modules/ui_patterns_devel/src/Plugin/TwigValidatorRule/TwigValidatorRuleTest.php b/modules/ui_patterns_devel/src/Plugin/TwigValidatorRule/TwigValidatorRuleTestExpr.php
similarity index 98%
rename from modules/ui_patterns_devel/src/Plugin/TwigValidatorRule/TwigValidatorRuleTest.php
rename to modules/ui_patterns_devel/src/Plugin/TwigValidatorRule/TwigValidatorRuleTestExpr.php
index 3372a35ad..cb652ab47 100644
--- a/modules/ui_patterns_devel/src/Plugin/TwigValidatorRule/TwigValidatorRuleTest.php
+++ b/modules/ui_patterns_devel/src/Plugin/TwigValidatorRule/TwigValidatorRuleTestExpr.php
@@ -22,7 +22,7 @@ use Twig\Node\Node;
   label: new TranslatableMarkup('Tests rules'),
   description: new TranslatableMarkup('Rules around Twig tests.'),
 )]
-final class TwigValidatorRuleTest extends TwigValidatorRulePluginBase {
+final class TwigValidatorRuleTestExpr extends TwigValidatorRulePluginBase {
 
   /**
    * Process Twig\Node\Expression\Test\NullTest.
diff --git a/modules/ui_patterns_devel/tests/src/Kernel/TwigValidatorRule/TwigValidatorRuleTestTest.php b/modules/ui_patterns_devel/tests/src/Kernel/TwigValidatorRule/TwigValidatorRuleTestExprTest.php
similarity index 93%
rename from modules/ui_patterns_devel/tests/src/Kernel/TwigValidatorRule/TwigValidatorRuleTestTest.php
rename to modules/ui_patterns_devel/tests/src/Kernel/TwigValidatorRule/TwigValidatorRuleTestExprTest.php
index c0627e438..be3376427 100644
--- a/modules/ui_patterns_devel/tests/src/Kernel/TwigValidatorRule/TwigValidatorRuleTestTest.php
+++ b/modules/ui_patterns_devel/tests/src/Kernel/TwigValidatorRule/TwigValidatorRuleTestExprTest.php
@@ -8,14 +8,14 @@ use Drupal\Core\Logger\RfcLogLevel;
 use Drupal\Tests\ui_patterns_devel\Kernel\TwigValidatorTestBase;
 
 /**
- * @coversDefaultClass \Drupal\ui_patterns_devel\Plugin\TwigValidatorRule\TwigValidatorRuleTest
+ * @coversDefaultClass \Drupal\ui_patterns_devel\Plugin\TwigValidatorRule\TwigValidatorRuleTestExpr
  *
  * @group ui_patterns_devel
  * @internal
  *
  * cSpell:disable
  */
-final class TwigValidatorRuleTestTest extends TwigValidatorTestBase {
+final class TwigValidatorRuleTestExprTest extends TwigValidatorTestBase {
 
   /**
    * Provides tests data for testTwigValidatorTest.
diff --git a/modules/ui_patterns_field_formatters/tests/fixtures/tests.formatter.yml b/modules/ui_patterns_field_formatters/tests/fixtures/tests.formatter.yml
index aeaec42b3..b9d31f8f7 100644
--- a/modules/ui_patterns_field_formatters/tests/fixtures/tests.formatter.yml
+++ b/modules/ui_patterns_field_formatters/tests/fixtures/tests.formatter.yml
@@ -65,7 +65,6 @@ nesting_4:
     elementExists:
       - [ 'css', '.ui-patterns-test-component' ]
     elementNotExists:
-      - [ 'xpath', "//div[contains(@class, 'ui-patterns-test-component')]//div[contains(@class, 'ui-patterns-slots-wrapper') and contains(text(), '1')]" ]
       - [ 'xpath', "//div[contains(@class, 'ui-patterns-test-component')]//div[contains(@class, 'ui-patterns-slots-wrapper') and contains(text(), '2')]" ]
       - [ 'xpath', "//div[contains(@class, 'ui-patterns-test-component')]//div[contains(@class, 'ui-patterns-slots-wrapper') and contains(text(), '3')]" ]
     elementsCount:
@@ -88,7 +87,6 @@ invalid_situation:
     field_name: 'field_text_with_summary'
   assertSession:
     elementNotExists:
-      - [ 'xpath', "//div[contains(@class, 'ui-patterns-test-component')]//div[contains(@class, 'ui-patterns-props-string') and contains(text(), 'this is first body3')]"]
       - [ 'xpath', "//div[contains(@class, 'ui-patterns-test-component')]//div[contains(@class, 'ui-patterns-props-string') and contains(text(), 'this is second body3')]"]
     elementsCount:
       - [ 'xpath', "//div[@class='ui-patterns-props-string']", 1 ]
diff --git a/src/Element/ComponentElementBuilder.php b/src/Element/ComponentElementBuilder.php
index a7cfe72d5..488181a4c 100644
--- a/src/Element/ComponentElementBuilder.php
+++ b/src/Element/ComponentElementBuilder.php
@@ -125,10 +125,11 @@ class ComponentElementBuilder implements TrustedCallbackInterface {
     if (!$source_id) {
       return NULL;
     }
+    /* @todo Performance issue...
     if (!$this->sourcesManager->isApplicable($source_id, $source_contexts)) {
-      // Throw new \Exception("source not applicable");.
-      return NULL;
-    }
+    // Throw new \Exception("source not applicable");.
+    return NULL;
+    }*/
     /** @var \Drupal\ui_patterns\SourceInterface $source */
     $source = $this->sourcesManager->createInstance(
       $source_id,
-- 
GitLab