diff --git a/core/modules/file/tests/src/Functional/Formatter/FileMediaFormatterTestBase.php b/core/modules/file/tests/src/Functional/Formatter/FileMediaFormatterTestBase.php index 228b1d6f05..7c5eef6b32 100644 --- a/core/modules/file/tests/src/Functional/Formatter/FileMediaFormatterTestBase.php +++ b/core/modules/file/tests/src/Functional/Formatter/FileMediaFormatterTestBase.php @@ -64,7 +64,15 @@ protected function createMediaField($formatter, $file_extensions, array $formatt ]); $field_config->save(); - $display = entity_get_display('entity_test', 'entity_test', 'full'); + $values = [ + 'targetEntityType' => $entity_type, + 'bundle' => 'entity_test', + 'mode' => 'full', + 'status' => TRUE, + ]; + $display = \Drupal::entityTypeManager() + ->getStorage('entity_view_display') + ->create($values); $display->setComponent($field_name, [ 'type' => $formatter, 'settings' => $formatter_settings, @@ -89,4 +97,18 @@ public function dataProvider() { ]; } + /** + * Data provider for testAttributes. + * + * @return array + * An array of data arrays. + * The data array contains: + * - An array of settings for the field formatter. + */ + public function attributesProvider() { + return [ + [['autoplay' => TRUE, 'loop' => TRUE, 'muted' => TRUE]], + ]; + } + } diff --git a/core/modules/file/tests/src/Functional/Formatter/FileVideoFormatterTest.php b/core/modules/file/tests/src/Functional/Formatter/FileVideoFormatterTest.php index 0cc997c00b..f77eefa502 100644 --- a/core/modules/file/tests/src/Functional/Formatter/FileVideoFormatterTest.php +++ b/core/modules/file/tests/src/Functional/Formatter/FileVideoFormatterTest.php @@ -55,4 +55,38 @@ public function testRender($tag_count, $formatter_settings) { $assert_session->elementExists('css', "video > source[src='$file2_url'][type='video/mp4']"); } + + /** + * @dataProvider attributesProvider + */ + public function testAttributes($formatter_settings) { + $field_config = $this->createMediaField('file_video', 'mp4', $formatter_settings); + + file_put_contents('public://file.mp4', str_repeat('t', 10)); + $file1 = File::create([ + 'uri' => 'public://file.mp4', + 'filename' => 'file.mp4', + ]); + $file1->save(); + + $entity = EntityTest::create([ + $field_config->getName() => [ + [ + 'target_id' => $file1->id(), + ], + ], + ]); + $entity->save(); + + $this->drupalGet($entity->toUrl()); + + $file1_url = file_url_transform_relative(file_create_url($file1->getFileUri())); + + $assert_session = $this->assertSession(); + $assert_session->elementExists('css', "video[autoplay='autoplay'] > source[src='$file1_url'][type='video/mp4']"); + $assert_session->elementExists('css', "video[loop='loop'] > source[src='$file1_url'][type='video/mp4']"); + $assert_session->elementExists('css', "video[muted='muted'] > source[src='$file1_url'][type='video/mp4']"); + + } + }