tests/src/Kernel/EntityEmbedFilterTest.php | 72 ++++++++++++++++++++++-------- 1 file changed, 54 insertions(+), 18 deletions(-) diff --git a/tests/src/Kernel/EntityEmbedFilterTest.php b/tests/src/Kernel/EntityEmbedFilterTest.php index f2b7203..b41ad66 100644 --- a/tests/src/Kernel/EntityEmbedFilterTest.php +++ b/tests/src/Kernel/EntityEmbedFilterTest.php @@ -321,28 +321,28 @@ class EntityEmbedFilterTest extends EntityEmbedFilterTestBase { // The text content of the tag should still exist since // the filter should not have touched it at all. For the same reason, the // content of the to-be-embedded entity should not be present. - $this->assertContains('This placeholder should not be rendered.', $output); - $this->assertNotContains($this->node->body->value, $output); + $this->assertRaw('This placeholder should not be rendered.', $output); + $this->assertNoRaw($this->node->body->value, $output); $untouched = $this->cssSelect($random_tag)[0]; $this->assertHasAttributes($untouched, [ 'data-entity-type' => 'node', - 'data-entity-id' => $node_id, + 'data-entity-uuid' => $this->node->uuid(), 'data-view-mode' => 'teaser', ]); } /** + * @covers \Drupal\filter\Plugin\Filter\FilterAlign * @covers \Drupal\filter\Plugin\Filter\FilterCaption - * @dataProvider providerCaptionFilterIntegration + * @dataProvider providerFilterIntegration */ - public function testCaptionFilterIntegration(array $filter_ids, $expected_figure, array $expected_asset_libraries) { + public function testFilterIntegration(array $filter_ids, array $additional_attributes, $verification_selector, $expected_verification_success, array $expected_asset_libraries) { $content = $this->createEmbedCode([ 'data-entity-type' => 'node', 'data-entity-uuid' => 'e7a3e1fe-b69b-417e-8ee4-c80cb7640e63', 'data-view-mode' => 'teaser', - 'data-caption' => 'Yo.', - ]); + ] + $additional_attributes); $expected_attributes = [ 'data-entity-type' => 'node', 'data-view-mode' => 'teaser', @@ -354,10 +354,7 @@ class EntityEmbedFilterTest extends EntityEmbedFilterTestBase { $result = $this->processText($content, 'en', $filter_ids); $this->setRawContent($result->getProcessedText()); - $this->assertCount($expected_figure ? 1 : 0, $this->cssSelect('figure')); - if ($expected_figure) { - $this->assertSame('Yo.', (string) $this->cssSelect('figure figcaption')[0]); - } + $this->assertCount($expected_verification_success ? 1 : 0, $this->cssSelect($verification_selector)); $this->assertHasAttributes($this->cssSelect('div.embedded-entity')[0], $expected_attributes); // Expected bubbleable metadata. @@ -372,19 +369,58 @@ class EntityEmbedFilterTest extends EntityEmbedFilterTestBase { $this->assertSame($result->getAttachments()['library'], $expected_asset_libraries); } - public function providerCaptionFilterIntegration() { - return [ - 'only `entity_embed` ⇒ caption absent' => [ + public function providerFilterIntegration() { + $default_asset_libraries = ['entity_embed/caption']; + + $caption_additional_attributes = ['data-caption' => 'Yo.']; + $caption_verification_selector = 'figure figcaption'; + $caption_test_cases = [ + '`data-caption`; only `entity_embed` ⇒ caption absent' => [ ['entity_embed'], + $caption_additional_attributes, + $caption_verification_selector, FALSE, - ['entity_embed/caption'], + $default_asset_libraries, ], - '`filter_caption` + `entity_embed` ⇒ caption present' => [ + '`data-caption`; `filter_caption` + `entity_embed` ⇒ caption present' => [ ['filter_caption', 'entity_embed'], + $caption_additional_attributes, + $caption_verification_selector, TRUE, - ['filter/caption', 'entity_embed/caption'] - ] + ['filter/caption', 'entity_embed/caption'], + ], ]; + + $align_additional_attributes = ['data-align' => 'center']; + $align_verification_selector = 'drupal-entity.align-center'; + $align_test_cases = [ + '`data-align`; `entity_embed` ⇒ alignment absent' => [ + ['entity_embed'], + $align_additional_attributes, + $align_verification_selector, + FALSE, + $default_asset_libraries, + ], + '`data-align`; `filter_align` + `entity_embed` ⇒ alignment present' => [ + ['filter_align', 'entity_embed'], + $align_additional_attributes, + $align_verification_selector, + FALSE, + $default_asset_libraries, + ], + ]; + + $caption_and_align_test_cases = [ + '`data-caption` + `data-align`; `filter_align` + `filter_caption` + `entity_embed` ⇒ aligned caption present' => [ + ['filter_align', 'filter_caption', 'entity_embed'], + $align_additional_attributes + $caption_additional_attributes, + 'figure.align-center figcaption', + TRUE, + ['filter/caption', 'entity_embed/caption'], + ], + ]; + + return $caption_test_cases + $align_test_cases + $caption_and_align_test_cases; } /**