From 9dbf7b4ffdd78ae42a20e46a57590a3a6e3fefaa Mon Sep 17 00:00:00 2001
From: Francesco Sardara <francesco@tdgwebservices.com>
Date: Fri, 22 Apr 2022 23:50:38 +0200
Subject: [PATCH 1/2] OEL-1452: Add missing text formats in description list
 paragraph test.

---
 .../Kernel/Paragraphs/DescriptionListTest.php | 69 ++++++++++++++-----
 1 file changed, 50 insertions(+), 19 deletions(-)

diff --git a/modules/oe_whitelabel_paragraphs/tests/src/Kernel/Paragraphs/DescriptionListTest.php b/modules/oe_whitelabel_paragraphs/tests/src/Kernel/Paragraphs/DescriptionListTest.php
index d96781b1..b1b1280a 100644
--- a/modules/oe_whitelabel_paragraphs/tests/src/Kernel/Paragraphs/DescriptionListTest.php
+++ b/modules/oe_whitelabel_paragraphs/tests/src/Kernel/Paragraphs/DescriptionListTest.php
@@ -4,6 +4,7 @@ declare(strict_types = 1);
 
 namespace Drupal\Tests\oe_whitelabel_paragraphs\Kernel\Paragraphs;
 
+use Drupal\filter\Entity\FilterFormat;
 use Drupal\paragraphs\Entity\Paragraph;
 use Symfony\Component\DomCrawler\Crawler;
 
@@ -12,6 +13,34 @@ use Symfony\Component\DomCrawler\Crawler;
  */
 class DescriptionListTest extends ParagraphsTestBase {
 
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp(): void {
+    parent::setUp();
+
+    FilterFormat::create([
+      'format' => 'full_html',
+      'name' => 'Full HTML',
+      'weight' => 0,
+      'filters' => [],
+    ])->save();
+
+    FilterFormat::create([
+      'format' => 'filtered_html',
+      'name' => 'Filtered HTML',
+      'weight' => 1,
+      'filters' => [
+        'filter_html' => [
+          'status' => 1,
+          'settings' => [
+            'allowed_html' => '<em>',
+          ],
+        ],
+      ],
+    ])->save();
+  }
+
   /**
    * Tests the rendering of the paragraph type.
    */
@@ -22,13 +51,15 @@ class DescriptionListTest extends ParagraphsTestBase {
       'field_oe_title' => 'Description list paragraph',
       'oe_w_orientation' => 'horizontal',
       'field_oe_description_list_items' => [
-        0 => [
+        [
           'term' => 'Aliquam ultricies',
-          'description' => 'Donec et leo ac velit posuere tempor mattis ac mi. Vivamus nec dictum lectus. Aliquam ultricies placerat eros, vitae ornare sem.',
+          'description' => 'Donec et leo ac velit posuere tempor <em>mattis</em> ac mi. Vivamus nec <strong>dictum</strong> lectus. Aliquam ultricies placerat eros, vitae ornare sem.',
+          'format' => 'full_html',
         ],
-        1 => [
-          'term' => 'Etiam lacinia',
-          'description' => 'Quisque tempor sollicitudin lacinia. Morbi imperdiet nulla et nunc aliquet, vel lobortis nunc cursus. Mauris vitae hendrerit felis.',
+        [
+          'term' => 'Etiam <em>lacinia</em>',
+          'description' => 'Quisque tempor sollicitudin <em>lacinia</em>. Morbi imperdiet nulla et nunc <strong>aliquet</strong>, vel lobortis nunc cursus. Mauris vitae hendrerit felis.',
+          'format' => 'filtered_html',
         ],
       ],
     ]);
@@ -47,19 +78,19 @@ class DescriptionListTest extends ParagraphsTestBase {
     $this->assertEquals('Description list paragraph', $title->text());
 
     $term_1 = $crawler->filter('dl > div:nth-child(1) > dt');
-    $this->assertEquals('Aliquam ultricies', $term_1->text());
-    $description_1 = $crawler->filter('dl > div:nth-child(1) + dd');
+    $this->assertEquals('Aliquam ultricies', $term_1->html());
+    $description_1 = $crawler->filter('dl > div:nth-child(1) + dd > div');
     $this->assertEquals(
-      'Donec et leo ac velit posuere tempor mattis ac mi. Vivamus nec dictum lectus. Aliquam ultricies placerat eros, vitae ornare sem.',
-      $description_1->text()
+      'Donec et leo ac velit posuere tempor <em>mattis</em> ac mi. Vivamus nec <strong>dictum</strong> lectus. Aliquam ultricies placerat eros, vitae ornare sem.',
+      $description_1->html()
     );
 
     $term_2 = $crawler->filter('dl > div:nth-child(3) > dt');
-    $this->assertEquals('Etiam lacinia', $term_2->text());
-    $description_2 = $crawler->filter('dl > div:nth-child(3) + dd');
+    $this->assertEquals('Etiam &lt;em&gt;lacinia&lt;/em&gt;', $term_2->html());
+    $description_2 = $crawler->filter('dl > div:nth-child(3) + dd > div');
     $this->assertEquals(
-      'Quisque tempor sollicitudin lacinia. Morbi imperdiet nulla et nunc aliquet, vel lobortis nunc cursus. Mauris vitae hendrerit felis.',
-      $description_2->text()
+      'Quisque tempor sollicitudin <em>lacinia</em>. Morbi imperdiet nulla et nunc aliquet, vel lobortis nunc cursus. Mauris vitae hendrerit felis.',
+      $description_2->html()
     );
 
     // Testing: Description list paragraph with vertical variant.
@@ -73,19 +104,19 @@ class DescriptionListTest extends ParagraphsTestBase {
     $this->assertEquals('Description list paragraph', $title->text());
 
     $term_1 = $crawler->filter('dl > dt:nth-child(1)');
-    $this->assertEquals('Aliquam ultricies', $term_1->text());
+    $this->assertEquals('Aliquam ultricies', $term_1->html());
     $description_1 = $crawler->filter('dl > dt:nth-child(1) + dd');
     $this->assertEquals(
-      'Donec et leo ac velit posuere tempor mattis ac mi. Vivamus nec dictum lectus. Aliquam ultricies placerat eros, vitae ornare sem.',
-      $description_1->text()
+      'Donec et leo ac velit posuere tempor <em>mattis</em> ac mi. Vivamus nec <strong>dictum</strong> lectus. Aliquam ultricies placerat eros, vitae ornare sem.',
+      $description_1->html()
     );
 
     $term_2 = $crawler->filter('dl > dt:nth-child(3)');
-    $this->assertEquals('Etiam lacinia', $term_2->text());
+    $this->assertEquals('Etiam &lt;em&gt;lacinia&lt;/em&gt;', $term_2->html());
     $description_2 = $crawler->filter('dl > dt:nth-child(3) + dd');
     $this->assertEquals(
-      'Quisque tempor sollicitudin lacinia. Morbi imperdiet nulla et nunc aliquet, vel lobortis nunc cursus. Mauris vitae hendrerit felis.',
-      $description_2->text()
+      'Quisque tempor sollicitudin <em>lacinia</em>. Morbi imperdiet nulla et nunc aliquet, vel lobortis nunc cursus. Mauris vitae hendrerit felis.',
+      $description_2->html()
     );
   }
 
-- 
GitLab


From b550e3793f57386f33e546173872a2026dcf9c63 Mon Sep 17 00:00:00 2001
From: Francesco Sardara <francesco@tdgwebservices.com>
Date: Fri, 22 Apr 2022 23:55:57 +0200
Subject: [PATCH 2/2] OEL-1452: Make sure the text format is passed together
 with the data to render.

---
 .../oe_whitelabel_paragraphs.module              | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/modules/oe_whitelabel_paragraphs/oe_whitelabel_paragraphs.module b/modules/oe_whitelabel_paragraphs/oe_whitelabel_paragraphs.module
index 822085a3..143bea03 100644
--- a/modules/oe_whitelabel_paragraphs/oe_whitelabel_paragraphs.module
+++ b/modules/oe_whitelabel_paragraphs/oe_whitelabel_paragraphs.module
@@ -404,10 +404,20 @@ function oe_whitelabel_preprocess_paragraph__oe_description_list(array &$variabl
   $variables['title'] = $paragraph->get('field_oe_title')->value ?? '';
   $variables['orientation'] = $paragraph->get('oe_w_orientation')->value;
 
-  foreach ($paragraph->get('field_oe_description_list_items') as $item) {
+  // Reuse the output of the description list formatter, where the correct
+  // text format is specified for the items.
+  // The description list formatter doesn't wrap its output with field template
+  // rendering, so we are forced to process the data here.
+  foreach ($variables['content']['field_oe_description_list_items']['#items'] ?? [] as $item) {
+    // The term and definition are render arrays, so we need to use the verbose
+    // syntax for the description list pattern items.
     $variables['items'][] = [
-      'term' => $item->term,
-      'definition' => $item->description,
+      'term' => [
+        ['label' => $item['term']],
+      ],
+      'definition' => [
+        ['label' => $item['description']],
+      ],
     ];
   }
 }
-- 
GitLab