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 <em>lacinia</em>', $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 <em>lacinia</em>', $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