diff --git a/modules/oe_theme_content_event/src/Plugin/ExtraField/Display/DescriptionExtraField.php b/modules/oe_theme_content_event/src/Plugin/ExtraField/Display/DescriptionExtraField.php index d0a9eaf85c..ddbb65e8a2 100755 --- a/modules/oe_theme_content_event/src/Plugin/ExtraField/Display/DescriptionExtraField.php +++ b/modules/oe_theme_content_event/src/Plugin/ExtraField/Display/DescriptionExtraField.php @@ -15,6 +15,7 @@ use Drupal\media\MediaInterface; use Drupal\oe_content_event\EventNodeWrapper; use Drupal\oe_theme\ValueObject\ImageValueObject; +use Drupal\oe_theme\ValueObject\MediaValueObject; use Drupal\oe_time_caching\Cache\TimeBasedCacheTagGeneratorInterface; use Symfony\Component\DependencyInjection\ContainerInterface; diff --git a/modules/oe_theme_helper/src/TwigExtension/TwigExtension.php b/modules/oe_theme_helper/src/TwigExtension/TwigExtension.php index 3d9d839e5d..60c63d0db2 100644 --- a/modules/oe_theme_helper/src/TwigExtension/TwigExtension.php +++ b/modules/oe_theme_helper/src/TwigExtension/TwigExtension.php @@ -18,6 +18,7 @@ use Drupal\oe_theme_helper\EuropeanUnionLanguages; use Drupal\smart_trim\Truncate\TruncateHTML; use Drupal\Core\Template\TwigExtension as CoreTwigExtension; +use Drupal\oe_theme\ValueObject\MediaValueObject; /** * Collection of extra Twig extensions as filters and functions. @@ -69,6 +70,7 @@ public function getFilters(): array { new \Twig_SimpleFilter('smart_trim', [$this, 'smartTrim'], ['needs_environment' => TRUE]), new \Twig_SimpleFilter('is_external_url', [UrlHelper::class, 'isExternal']), new \Twig_SimpleFilter('filter_empty', [$this, 'filterEmpty']), + new \Twig_SimpleFilter('validate_ratio', [MediaValueObject::class, 'validateRatio']), ]; } diff --git a/templates/patterns/media_container/pattern-media-container.html.twig b/templates/patterns/media_container/pattern-media-container.html.twig index e68b32315f..dc380d3f58 100644 --- a/templates/patterns/media_container/pattern-media-container.html.twig +++ b/templates/patterns/media_container/pattern-media-container.html.twig @@ -4,11 +4,13 @@ * Media container pattern. */ #} +{% set _ratio = media.ratio|default('16-9') %} + {% include '@ecl-twig/media-container' with { 'image': media.image.src, 'alt': media.image.alt, 'embedded_media': media.video, - 'ratio': media.ratio, + 'ratio': _ratio|validate_ratio, 'description': description, 'sources': media.sources, 'tracks': media.tracks diff --git a/templates/patterns/text_featured_media/pattern-text-featured-media.html.twig b/templates/patterns/text_featured_media/pattern-text-featured-media.html.twig index 117c14325a..8191ee1356 100644 --- a/templates/patterns/text_featured_media/pattern-text-featured-media.html.twig +++ b/templates/patterns/text_featured_media/pattern-text-featured-media.html.twig @@ -12,7 +12,6 @@ {% if media.image or media.video %}
{{ pattern('media_container', { - 'compliance': compliance, 'description': caption, 'media': media }) }} diff --git a/tests/Kernel/Patterns/MediaContainerPatternRenderingTest.php b/tests/Kernel/Patterns/MediaContainerPatternRenderingTest.php deleted file mode 100644 index 0787f668d6..0000000000 --- a/tests/Kernel/Patterns/MediaContainerPatternRenderingTest.php +++ /dev/null @@ -1,65 +0,0 @@ - 'pattern', - '#id' => 'media_container', - '#fields' => $fields, - ]; - - $html = $this->renderRoot($pattern); - $this->assertRendering($html, $assertions); - } - - /** - * Data provider for testMediaContainerPattern. - * - * @return array - * Test data and assertions. - */ - public function dataProvider(): array { - $data = $this->getFixtureContent('patterns/media_container_pattern.yml'); - - foreach ($data as $key => $value) { - if (!isset($value['fields']['media'])) { - continue; - } - - $media = $value['fields']['media']; - - if (isset($media['image'])) { - $media['image'] = ImageValueObject::fromArray($media['image']); - } - - $data[$key]['fields']['media'] = MediaValueObject::fromArray($media); - } - - return $data; - } - -} diff --git a/tests/Kernel/Patterns/TextFeaturedMediaPatternTest.php b/tests/Kernel/Patterns/TextFeaturedMediaPatternTest.php deleted file mode 100644 index da4363f860..0000000000 --- a/tests/Kernel/Patterns/TextFeaturedMediaPatternTest.php +++ /dev/null @@ -1,65 +0,0 @@ - 'pattern', - '#id' => 'text_featured_media', - '#fields' => $fields, - ]; - - $html = $this->renderRoot($pattern); - $this->assertRendering($html, $assertions); - } - - /** - * Data provider for testMediaPattern. - * - * @return array - * Test data and assertions. - */ - public function dataProvider(): array { - $data = $this->getFixtureContent('patterns/text_featured_media.yml'); - - foreach ($data as $key => $value) { - if (!isset($value['fields']['media'])) { - continue; - } - - $media = $value['fields']['media']; - - if (isset($media['image'])) { - $media['image'] = ImageValueObject::fromArray($media['image']); - } - - $data[$key]['fields']['media'] = MediaValueObject::fromArray($media); - } - - return $data; - } - -} diff --git a/tests/Kernel/fixtures/patterns/media_container_pattern.yml b/tests/Kernel/fixtures/patterns/media_container_pattern.yml deleted file mode 100644 index a2eaf367f1..0000000000 --- a/tests/Kernel/fixtures/patterns/media_container_pattern.yml +++ /dev/null @@ -1,94 +0,0 @@ -- fields: - description: "Caption" - media: - image: - src: "http://via.placeholder.com/150x150" - alt: "Alt text" - assertions: - count: - 'figure.ecl-media-container img.ecl-media-container__media[src="http://via.placeholder.com/150x150"]': 1 - 'figure.ecl-media-container figcaption.ecl-media-container__caption': 1 - 'figure.ecl-media-container .ecl-media-container__media[alt="Alt text"]': 1 - equals: - 'figure.ecl-media-container figcaption.ecl-media-container__caption': Caption -- fields: - media: - image: - src: "http://via.placeholder.com/150x150" - alt: "Image with no caption" - assertions: - count: - 'figure.ecl-media-container img.ecl-media-container__media[src="http://via.placeholder.com/150x150"]': 1 - 'figure.ecl-media-container figcaption.ecl-media-container__caption': 0 - 'figure.ecl-media-container .ecl-media-container__media[alt="Image with no caption"]': 1 -- fields: - description: "Caption" - media: - video: "" - ratio: "16:9" - assertions: - count: - 'figure.ecl-media-container figcaption.ecl-media-container__caption': 1 - 'figure.ecl-media-container .ecl-media-container__media--ratio-16-9 iframe': 1 - 'figure.ecl-media-container .ecl-media-container__media--ratio-16-9 iframe[src="//ec.europa.eu/avservices/play.cfm?ref=I-181645"]': 1 - equals: - '.ecl-media-container figcaption.ecl-media-container__caption': Caption -- fields: - description: "Caption" - media: - video: "" - ratio: "4-3" - assertions: - count: - 'figure.ecl-media-container figcaption.ecl-media-container__caption': 1 - 'figure.ecl-media-container .ecl-media-container__media--ratio-4-3 iframe': 1 - 'figure.ecl-media-container .ecl-media-container__media--ratio-4-3 iframe[src="//ec.europa.eu/avservices/play.cfm?ref=I-181645"]': 1 - equals: - 'figure.ecl-media-container figcaption.ecl-media-container__caption': Caption -- fields: - description: "Caption" - media: - video: "" - ratio: "3_2" - assertions: - count: - 'figure.ecl-media-container figcaption.ecl-media-container__caption': 1 - 'figure.ecl-media-container .ecl-media-container__media--ratio-3-2 iframe': 1 - 'figure.ecl-media-container .ecl-media-container__media--ratio-3-2 iframe[src="//ec.europa.eu/avservices/play.cfm?ref=I-181645"]': 1 - equals: - 'figure.ecl-media-container figcaption.ecl-media-container__caption': Caption -- fields: - description: "Caption" - media: - video: "" - ratio: "1:1" - assertions: - count: - 'figure.ecl-media-container figcaption.ecl-media-container__caption': 1 - 'figure.ecl-media-container .ecl-media-container__media--ratio-1-1 iframe': 1 - 'figure.ecl-media-container .ecl-media-container__media--ratio-1-1 iframe[src="//ec.europa.eu/avservices/play.cfm?ref=I-181645"]': 1 - equals: - 'figure.ecl-media-container figcaption.ecl-media-container__caption': Caption -- fields: - description: "Caption" - media: - video: "" - ratio: "20:15" - assertions: - count: - 'figure.ecl-media-container figcaption.ecl-media-container__caption': 1 - 'figure.ecl-media-container .ecl-media-container__media--ratio-16-9 iframe': 1 - 'figure.ecl-media-container .ecl-media-container__media--ratio-16-9 iframe[src="//ec.europa.eu/avservices/play.cfm?ref=I-181645"]': 1 - equals: - '.ecl-media-container figcaption.ecl-media-container__caption': Caption -- fields: - description: "Caption" - media: - video: "" - assertions: - count: - 'figure.ecl-media-container figcaption.ecl-media-container__caption': 1 - 'figure.ecl-media-container .ecl-media-container__media iframe': 1 - 'figure.ecl-media-container .ecl-media-container__media--ratio-16-9 iframe[src="https://www.youtube.com/embed/UmFFTkjs-O0"]': 1 - equals: - 'figure.ecl-media-container figcaption.ecl-media-container__caption': Caption diff --git a/tests/Kernel/fixtures/patterns/text_featured_media.yml b/tests/Kernel/fixtures/patterns/text_featured_media.yml deleted file mode 100644 index f1141d1ba7..0000000000 --- a/tests/Kernel/fixtures/patterns/text_featured_media.yml +++ /dev/null @@ -1,107 +0,0 @@ -- fields: - media: - video: "" - ratio: "1:1" - assertions: - count: - 'div.ecl-media-container__media--ratio-1-1 iframe[src="//ec.europa.eu/avservices/play.cfm?ref=I-181645"]': 1 -- fields: - title: "Heading" - media: - image: - src: "http://via.placeholder.com/150x150" - caption: "Some caption text for the image" - text: "Some more text" - assertions: - count: - 'div.ecl-row': 1 - 'figure.ecl-media-container': 1 - 'img.ecl-media-container__media[src="http://via.placeholder.com/150x150"]': 1 - 'div.ecl-media-container__media--ratio-16-9 iframe': 0 - 'figcaption.ecl-media-container__caption': 1 - equals: - 'h2.ecl-u-type-heading-2': "Heading" - 'figcaption.ecl-media-container__caption': "Some caption text for the image" - 'div.ecl-col-md-6.ecl-editor': "Some more text" -- fields: - media: - image: - src: "http://via.placeholder.com/150x150" - caption: "Some caption text for the image" - text: "Some more text" - assertions: - count: - 'h2.ecl-u-type-heading-2': 0 - 'div.ecl-row': 1 - 'figure.ecl-media-container': 1 - 'img.ecl-media-container__media[src="http://via.placeholder.com/150x150"]': 1 - 'div.ecl-media-container__media--ratio-16-9 iframe': 0 - 'figcaption.ecl-media-container__caption': 1 - equals: - 'figcaption.ecl-media-container__caption': "Some caption text for the image" - 'div.ecl-col-md-6.ecl-editor': "Some more text" -- fields: - title: "Heading" - caption: "Some caption text for the image" - text: "Some more text" - assertions: - count: - 'div.ecl-row': 1 - 'figure.ecl-media-container': 0 - 'div.ecl-col-md-6.ecl-editor': 0 - 'img.ecl-media-container__media[src="http://via.placeholder.com/150x150"]': 0 - 'div.ecl-media-container__media--ratio-16-9 iframe': 0 - 'figcaption.ecl-media-container__caption': 0 - equals: - 'h2.ecl-u-type-heading-2': "Heading" - 'div.ecl-col-12.ecl-editor': "Some more text" -- fields: - title: "Heading" - media: - image: - src: "http://via.placeholder.com/150x150" - text: "Some more text" - assertions: - count: - 'div.ecl-row': 1 - 'figure.ecl-media-container': 1 - 'img.ecl-media-container__media[src="http://via.placeholder.com/150x150"]': 1 - 'div.ecl-media-container__media--ratio-16-9 iframe': 0 - 'figcaption.ecl-media-container__caption': 0 - equals: - 'h2.ecl-u-type-heading-2': "Heading" - 'div.ecl-col-md-6.ecl-editor': "Some more text" -- fields: - title: "Heading" - caption: "Some caption" - assertions: - count: - 'div.ecl-row': 0 - 'figure.ecl-media-container': 0 - 'img.ecl-media-container__media[src="http://via.placeholder.com/150x150"]': 0 - 'div.ecl-media-container__media--ratio-16-9 iframe': 0 - 'figcaption.ecl-media-container__caption': 0 - equals: - 'h2.ecl-u-type-heading-2': "Heading" -- fields: - title: "Heading" - media: - video: "" - text: "Some more text" - assertions: - count: - 'div.ecl-row': 1 - 'figure.ecl-media-container': 1 - 'img.ecl-media-container__media[src="http://via.placeholder.com/150x150"]': 0 - 'div.ecl-media-container__media--ratio-16-9 iframe[src="//ec.europa.eu/avservices/play.cfm?ref=I-181645"]': 1 - 'figcaption.ecl-media-container__caption': 0 - equals: - 'h2.ecl-u-type-heading-2': "Heading" - 'div.ecl-col-md-6.ecl-editor': "Some more text" -- fields: - media: - video: "" - video_ratio: "invalid" - assertions: - count: - 'div.ecl-media-container__media--ratio-16-9 iframe[src="//ec.europa.eu/avservices/play.cfm?ref=I-181645"]': 1 diff --git a/tests/Kernel/fixtures/rendering.yml b/tests/Kernel/fixtures/rendering.yml index a0a820440d..f11fc1c1bb 100644 --- a/tests/Kernel/fixtures/rendering.yml +++ b/tests/Kernel/fixtures/rendering.yml @@ -2236,45 +2236,6 @@ '.ecl-timeline2__item:nth-child(4) .ecl-timeline2__content': 'Lorem Ipsum 4' '.ecl-timeline2__item:nth-child(5) .ecl-timeline2__content': 'Lorem Ipsum 5' '.ecl-timeline2__item:nth-child(6) .ecl-timeline2__content': 'Lorem Ipsum 6' -- array: - '#type': pattern - '#id': text_featured_media - '#fields': - title: "Heading" - image: - src: "http://via.placeholder.com/150x150" - caption: "Some caption text for the image" - text: "Some more text" - assertions: - count: - 'div.ecl-row': 1 - 'figure.ecl-media-container': 1 - 'img.ecl-media-container__media[src="http://via.placeholder.com/150x150"]': 1 - 'div.ecl-media-container__media--ratio-16-9 iframe': 0 - 'figcaption.ecl-media-container__caption': 1 - equals: - 'h2.ecl-u-type-heading-2': "Heading" - 'figcaption.ecl-media-container__caption': "Some caption text for the image" - 'div.ecl-col-md-6.ecl-editor': "Some more text" -- array: - '#type': pattern - '#id': text_featured_media - '#fields': - image: - src: "http://via.placeholder.com/150x150" - caption: "Some caption text for the image" - text: "Some more text" - assertions: - count: - 'h2.ecl-u-type-heading-2': 0 - 'div.ecl-row': 1 - 'figure.ecl-media-container': 1 - 'img.ecl-media-container__media[src="http://via.placeholder.com/150x150"]': 1 - 'div.ecl-media-container__media--ratio-16-9 iframe': 0 - 'figcaption.ecl-media-container__caption': 1 - equals: - 'figcaption.ecl-media-container__caption': "Some caption text for the image" - 'div.ecl-col-md-6.ecl-editor': "Some more text" - array: '#type': pattern '#id': icons_with_text @@ -2540,3 +2501,263 @@ 'div.ecl-u-mr-xs.ecl-u-mt-s.ecl-tag.ecl-tag--removable': 'No link' equals: 'div.active-search-filters__name span': 'Source' +- array: + '#type': pattern + '#id': text_featured_media + '#fields': + media: + video: "" + ratio: "1:1" + assertions: + count: + 'div.ecl-media-container__media--ratio-1-1 iframe[src="//ec.europa.eu/avservices/play.cfm?ref=I-181645"]': 1 +- array: + '#type': pattern + '#id': text_featured_media + '#fields': + media: + video: "" + ratio: "4:3" + assertions: + count: + 'div.ecl-media-container__media--ratio-4-3 iframe[src="//ec.europa.eu/avservices/play.cfm?ref=I-181645"]': 1 +- array: + '#type': pattern + '#id': text_featured_media + '#fields': + title: "Heading" + media: + image: + src: "http://via.placeholder.com/150x150" + caption: "Some caption text for the image" + text: "Some more text" + assertions: + count: + 'div.ecl-row': 1 + 'figure.ecl-media-container': 1 + 'img.ecl-media-container__media[src="http://via.placeholder.com/150x150"]': 1 + 'div.ecl-media-container__media--ratio-16-9 iframe': 0 + 'figcaption.ecl-media-container__caption': 1 + equals: + 'h2.ecl-u-type-heading-2': "Heading" + 'figcaption.ecl-media-container__caption': "Some caption text for the image" + 'div.ecl-col-md-6.ecl-editor': "Some more text" +- array: + '#type': pattern + '#id': text_featured_media + '#fields': + media: + image: + src: "http://via.placeholder.com/150x150" + caption: "Some caption text for the image" + text: "Some more text" + assertions: + count: + 'h2.ecl-u-type-heading-2': 0 + 'div.ecl-row': 1 + 'figure.ecl-media-container': 1 + 'img.ecl-media-container__media[src="http://via.placeholder.com/150x150"]': 1 + 'div.ecl-media-container__media--ratio-16-9 iframe': 0 + 'figcaption.ecl-media-container__caption': 1 + equals: + 'figcaption.ecl-media-container__caption': "Some caption text for the image" + 'div.ecl-col-md-6.ecl-editor': "Some more text" +- array: + '#type': pattern + '#id': text_featured_media + '#fields': + title: "Heading" + caption: "Some caption text for the image" + text: "Some more text" + assertions: + count: + 'div.ecl-row': 1 + 'figure.ecl-media-container': 0 + 'div.ecl-col-md-6.ecl-editor': 0 + 'img.ecl-media-container__media[src="http://via.placeholder.com/150x150"]': 0 + 'div.ecl-media-container__media--ratio-16-9 iframe': 0 + 'figcaption.ecl-media-container__caption': 0 + equals: + 'h2.ecl-u-type-heading-2': "Heading" + 'div.ecl-col-12.ecl-editor': "Some more text" +- array: + '#type': pattern + '#id': text_featured_media + '#fields': + title: "Heading" + media: + image: + src: "http://via.placeholder.com/150x150" + text: "Some more text" + assertions: + count: + 'div.ecl-row': 1 + 'figure.ecl-media-container': 1 + 'img.ecl-media-container__media[src="http://via.placeholder.com/150x150"]': 1 + 'div.ecl-media-container__media--ratio-16-9 iframe': 0 + 'figcaption.ecl-media-container__caption': 0 + equals: + 'h2.ecl-u-type-heading-2': "Heading" + 'div.ecl-col-md-6.ecl-editor': "Some more text" +- array: + '#type': pattern + '#id': text_featured_media + '#fields': + title: "Heading" + caption: "Some caption" + assertions: + count: + 'div.ecl-row': 0 + 'figure.ecl-media-container': 0 + 'img.ecl-media-container__media[src="http://via.placeholder.com/150x150"]': 0 + 'div.ecl-media-container__media--ratio-16-9 iframe': 0 + 'figcaption.ecl-media-container__caption': 0 + equals: + 'h2.ecl-u-type-heading-2': "Heading" +- array: + '#type': pattern + '#id': text_featured_media + '#fields': + title: "Heading" + media: + video: "" + text: "Some more text" + assertions: + count: + 'div.ecl-row': 1 + 'figure.ecl-media-container': 1 + 'img.ecl-media-container__media[src="http://via.placeholder.com/150x150"]': 0 + 'div.ecl-media-container__media--ratio-16-9 iframe[src="//ec.europa.eu/avservices/play.cfm?ref=I-181645"]': 1 + 'figcaption.ecl-media-container__caption': 0 + equals: + 'h2.ecl-u-type-heading-2': "Heading" + 'div.ecl-col-md-6.ecl-editor': "Some more text" +- array: + '#type': pattern + '#id': text_featured_media + '#fields': + media: + video: "" + ratio: "invalid" + assertions: + count: + 'div.ecl-media-container__media--ratio-16-9 iframe[src="//ec.europa.eu/avservices/play.cfm?ref=I-181645"]': 1 +- array: + '#type': pattern + '#id': media_container + '#fields': + description: "Caption" + media: + image: + src: "http://via.placeholder.com/150x150" + alt: "Alt text" + assertions: + count: + 'figure.ecl-media-container img.ecl-media-container__media[src="http://via.placeholder.com/150x150"]': 1 + 'figure.ecl-media-container figcaption.ecl-media-container__caption': 1 + 'figure.ecl-media-container .ecl-media-container__media[alt="Alt text"]': 1 + equals: + 'figure.ecl-media-container figcaption.ecl-media-container__caption': Caption +- array: + '#type': pattern + '#id': media_container + '#fields': + media: + image: + src: "http://via.placeholder.com/150x150" + alt: "Image with no caption" + assertions: + count: + 'figure.ecl-media-container img.ecl-media-container__media[src="http://via.placeholder.com/150x150"]': 1 + 'figure.ecl-media-container figcaption.ecl-media-container__caption': 0 + 'figure.ecl-media-container .ecl-media-container__media[alt="Image with no caption"]': 1 +- array: + '#type': pattern + '#id': media_container + '#fields': + description: "Caption" + media: + video: "" + ratio: "16:9" + assertions: + count: + 'figure.ecl-media-container figcaption.ecl-media-container__caption': 1 + 'figure.ecl-media-container .ecl-media-container__media--ratio-16-9 iframe': 1 + 'figure.ecl-media-container .ecl-media-container__media--ratio-16-9 iframe[src="//ec.europa.eu/avservices/play.cfm?ref=I-181645"]': 1 + equals: + '.ecl-media-container figcaption.ecl-media-container__caption': Caption +- array: + '#type': pattern + '#id': media_container + '#fields': + description: "Caption" + media: + video: "" + ratio: "4-3" + assertions: + count: + 'figure.ecl-media-container figcaption.ecl-media-container__caption': 1 + 'figure.ecl-media-container .ecl-media-container__media--ratio-4-3 iframe': 1 + 'figure.ecl-media-container .ecl-media-container__media--ratio-4-3 iframe[src="//ec.europa.eu/avservices/play.cfm?ref=I-181645"]': 1 + equals: + 'figure.ecl-media-container figcaption.ecl-media-container__caption': Caption +- array: + '#type': pattern + '#id': media_container + '#fields': + description: "Caption" + media: + video: "" + ratio: "3_2" + assertions: + count: + 'figure.ecl-media-container figcaption.ecl-media-container__caption': 1 + 'figure.ecl-media-container .ecl-media-container__media--ratio-3-2 iframe': 1 + 'figure.ecl-media-container .ecl-media-container__media--ratio-3-2 iframe[src="//ec.europa.eu/avservices/play.cfm?ref=I-181645"]': 1 + equals: + 'figure.ecl-media-container figcaption.ecl-media-container__caption': Caption +- array: + '#type': pattern + '#id': media_container + '#fields': + description: "Caption" + media: + video: "" + ratio: "1:1" + assertions: + count: + 'figure.ecl-media-container figcaption.ecl-media-container__caption': 1 + 'figure.ecl-media-container .ecl-media-container__media--ratio-1-1 iframe': 1 + 'figure.ecl-media-container .ecl-media-container__media--ratio-1-1 iframe[src="//ec.europa.eu/avservices/play.cfm?ref=I-181645"]': 1 + equals: + 'figure.ecl-media-container figcaption.ecl-media-container__caption': Caption +- array: + '#type': pattern + '#id': media_container + '#fields': + description: "Caption" + media: + video: "" + ratio: "20:15" + assertions: + count: + 'figure.ecl-media-container figcaption.ecl-media-container__caption': 1 + 'figure.ecl-media-container .ecl-media-container__media--ratio-16-9 iframe': 1 + 'figure.ecl-media-container .ecl-media-container__media--ratio-16-9 iframe[src="//ec.europa.eu/avservices/play.cfm?ref=I-181645"]': 1 + equals: + '.ecl-media-container figcaption.ecl-media-container__caption': Caption +- array: + '#type': pattern + '#id': media_container + '#fields': + description: "Caption" + media: + video: "" + assertions: + count: + 'figure.ecl-media-container figcaption.ecl-media-container__caption': 1 + 'figure.ecl-media-container .ecl-media-container__media iframe': 1 + 'figure.ecl-media-container .ecl-media-container__media--ratio-16-9 iframe[src="https://www.youtube.com/embed/UmFFTkjs-O0"]': 1 + equals: + 'figure.ecl-media-container figcaption.ecl-media-container__caption': Caption +