Chris@14
|
1 <?php
|
Chris@14
|
2
|
Chris@14
|
3 namespace Drupal\Tests\media\FunctionalJavascript;
|
Chris@14
|
4
|
Chris@14
|
5 use Drupal\Core\Entity\Entity\EntityViewDisplay;
|
Chris@14
|
6 use Drupal\field\Entity\FieldConfig;
|
Chris@14
|
7 use Drupal\field\Entity\FieldStorageConfig;
|
Chris@14
|
8 use Drupal\file\Entity\File;
|
Chris@14
|
9
|
Chris@14
|
10 /**
|
Chris@14
|
11 * Tests the Audio and Video media sources.
|
Chris@14
|
12 *
|
Chris@14
|
13 * @group media
|
Chris@14
|
14 */
|
Chris@14
|
15 class MediaSourceAudioVideoTest extends MediaSourceTestBase {
|
Chris@14
|
16
|
Chris@14
|
17 /**
|
Chris@14
|
18 * Check the Audio source functionality.
|
Chris@14
|
19 */
|
Chris@14
|
20 public function testAudioTypeCreation() {
|
Chris@14
|
21 $assert_session = $this->assertSession();
|
Chris@14
|
22 $page = $this->getSession()->getPage();
|
Chris@14
|
23
|
Chris@14
|
24 $source_id = 'audio_file';
|
Chris@14
|
25 $type_name = 'audio_type';
|
Chris@14
|
26 $field_name = 'field_media_' . $source_id;
|
Chris@14
|
27 $this->doTestCreateMediaType($type_name, $source_id);
|
Chris@14
|
28
|
Chris@14
|
29 // Check that the source field was created with the correct settings.
|
Chris@14
|
30 $storage = FieldStorageConfig::load("media.$field_name");
|
Chris@14
|
31 $this->assertInstanceOf(FieldStorageConfig::class, $storage);
|
Chris@14
|
32 $field = FieldConfig::load("media.$type_name.$field_name");
|
Chris@14
|
33 $this->assertInstanceOf(FieldConfig::class, $field);
|
Chris@14
|
34 $this->assertSame('mp3 wav aac', FieldConfig::load("media.$type_name.$field_name")->get('settings')['file_extensions']);
|
Chris@14
|
35
|
Chris@14
|
36 // Check that the display holds the correct formatter configuration.
|
Chris@14
|
37 $display = EntityViewDisplay::load("media.$type_name.default");
|
Chris@14
|
38 $this->assertInstanceOf(EntityViewDisplay::class, $display);
|
Chris@14
|
39 $formatter = $display->getComponent($field_name)['type'];
|
Chris@14
|
40 $this->assertSame('file_audio', $formatter);
|
Chris@14
|
41
|
Chris@17
|
42 // Create a media asset.
|
Chris@14
|
43 file_put_contents('public://file.mp3', str_repeat('t', 10));
|
Chris@14
|
44 $file = File::create([
|
Chris@14
|
45 'uri' => 'public://file.mp3',
|
Chris@14
|
46 'filename' => 'file.mp3',
|
Chris@14
|
47 ]);
|
Chris@14
|
48 $file->save();
|
Chris@14
|
49
|
Chris@14
|
50 $this->drupalGet("media/add/$type_name");
|
Chris@14
|
51 $page->fillField('Name', 'Audio media asset');
|
Chris@14
|
52 $page->attachFileToField("files[{$field_name}_0]", \Drupal::service('file_system')->realpath('public://file.mp3'));
|
Chris@14
|
53 $result = $assert_session->waitForButton('Remove');
|
Chris@14
|
54 $this->assertNotEmpty($result);
|
Chris@14
|
55 $page->pressButton('Save');
|
Chris@14
|
56
|
Chris@17
|
57 // Verify that there is a creation message and that it contains a link to
|
Chris@17
|
58 // the media entity.
|
Chris@14
|
59 $assert_session->pageTextContains("$type_name Audio media asset has been created.");
|
Chris@17
|
60 $this->drupalGet($this->assertLinkToCreatedMedia());
|
Chris@17
|
61
|
Chris@17
|
62 // Verify that the <audio> tag is present on the media entity view.
|
Chris@14
|
63 $assert_session->elementExists('css', "audio > source[type='audio/mpeg']");
|
Chris@14
|
64 }
|
Chris@14
|
65
|
Chris@14
|
66 /**
|
Chris@14
|
67 * Check the Video source functionality.
|
Chris@14
|
68 */
|
Chris@14
|
69 public function testVideoTypeCreation() {
|
Chris@14
|
70 $assert_session = $this->assertSession();
|
Chris@14
|
71 $page = $this->getSession()->getPage();
|
Chris@14
|
72
|
Chris@14
|
73 $source_id = 'video_file';
|
Chris@14
|
74 $type_name = 'video_type';
|
Chris@14
|
75 $field_name = 'field_media_' . $source_id;
|
Chris@14
|
76 $this->doTestCreateMediaType($type_name, $source_id);
|
Chris@14
|
77
|
Chris@14
|
78 // Check that the source field was created with the correct settings.
|
Chris@14
|
79 $storage = FieldStorageConfig::load("media.$field_name");
|
Chris@14
|
80 $this->assertInstanceOf(FieldStorageConfig::class, $storage);
|
Chris@14
|
81 $field = FieldConfig::load("media.$type_name.$field_name");
|
Chris@14
|
82 $this->assertInstanceOf(FieldConfig::class, $field);
|
Chris@14
|
83 $this->assertSame('mp4', FieldConfig::load("media.$type_name.$field_name")->getSetting('file_extensions'));
|
Chris@14
|
84
|
Chris@14
|
85 // Check that the display holds the correct formatter configuration.
|
Chris@14
|
86 $display = EntityViewDisplay::load("media.$type_name.default");
|
Chris@14
|
87 $this->assertInstanceOf(EntityViewDisplay::class, $display);
|
Chris@14
|
88 $formatter = $display->getComponent($field_name)['type'];
|
Chris@14
|
89 $this->assertSame('file_video', $formatter);
|
Chris@14
|
90
|
Chris@17
|
91 // Create a media asset.
|
Chris@14
|
92 file_put_contents('public://file.mp4', str_repeat('t', 10));
|
Chris@14
|
93 $file = File::create([
|
Chris@14
|
94 'uri' => 'public://file.mp4',
|
Chris@14
|
95 'filename' => 'file.mp4',
|
Chris@14
|
96 ]);
|
Chris@14
|
97 $file->save();
|
Chris@14
|
98
|
Chris@14
|
99 $this->drupalGet("media/add/$type_name");
|
Chris@14
|
100 $page->fillField('Name', 'Video media asset');
|
Chris@14
|
101 $page->attachFileToField("files[{$field_name}_0]", \Drupal::service('file_system')->realpath('public://file.mp4'));
|
Chris@14
|
102 $result = $assert_session->waitForButton('Remove');
|
Chris@14
|
103 $this->assertNotEmpty($result);
|
Chris@14
|
104 $page->pressButton('Save');
|
Chris@14
|
105
|
Chris@17
|
106 // Verify that there is a creation message and that it contains a link to
|
Chris@17
|
107 // the media entity.
|
Chris@14
|
108 $assert_session->pageTextContains("$type_name Video media asset has been created.");
|
Chris@17
|
109
|
Chris@17
|
110 $this->drupalGet($this->assertLinkToCreatedMedia());
|
Chris@17
|
111 // Verify that the <video> tag is present on the media entity view.
|
Chris@14
|
112 $assert_session->elementExists('css', "video > source[type='video/mp4']");
|
Chris@14
|
113 }
|
Chris@14
|
114
|
Chris@14
|
115 }
|