Mercurial > hg > isophonics-drupal-site
diff core/modules/media/tests/src/FunctionalJavascript/MediaSourceAudioVideoTest.php @ 14:1fec387a4317
Update Drupal core to 8.5.2 via Composer
author | Chris Cannam |
---|---|
date | Mon, 23 Apr 2018 09:46:53 +0100 |
parents | |
children | 129ea1e6d783 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/media/tests/src/FunctionalJavascript/MediaSourceAudioVideoTest.php Mon Apr 23 09:46:53 2018 +0100 @@ -0,0 +1,105 @@ +<?php + +namespace Drupal\Tests\media\FunctionalJavascript; + +use Drupal\Core\Entity\Entity\EntityViewDisplay; +use Drupal\field\Entity\FieldConfig; +use Drupal\field\Entity\FieldStorageConfig; +use Drupal\file\Entity\File; + +/** + * Tests the Audio and Video media sources. + * + * @group media + */ +class MediaSourceAudioVideoTest extends MediaSourceTestBase { + + /** + * Check the Audio source functionality. + */ + public function testAudioTypeCreation() { + $assert_session = $this->assertSession(); + $page = $this->getSession()->getPage(); + + $source_id = 'audio_file'; + $type_name = 'audio_type'; + $field_name = 'field_media_' . $source_id; + $this->doTestCreateMediaType($type_name, $source_id); + + // Check that the source field was created with the correct settings. + $storage = FieldStorageConfig::load("media.$field_name"); + $this->assertInstanceOf(FieldStorageConfig::class, $storage); + $field = FieldConfig::load("media.$type_name.$field_name"); + $this->assertInstanceOf(FieldConfig::class, $field); + $this->assertSame('mp3 wav aac', FieldConfig::load("media.$type_name.$field_name")->get('settings')['file_extensions']); + + // Check that the display holds the correct formatter configuration. + $display = EntityViewDisplay::load("media.$type_name.default"); + $this->assertInstanceOf(EntityViewDisplay::class, $display); + $formatter = $display->getComponent($field_name)['type']; + $this->assertSame('file_audio', $formatter); + + // Create a media asset and verify that the <audio> tag is present. + file_put_contents('public://file.mp3', str_repeat('t', 10)); + $file = File::create([ + 'uri' => 'public://file.mp3', + 'filename' => 'file.mp3', + ]); + $file->save(); + + $this->drupalGet("media/add/$type_name"); + $page->fillField('Name', 'Audio media asset'); + $page->attachFileToField("files[{$field_name}_0]", \Drupal::service('file_system')->realpath('public://file.mp3')); + $result = $assert_session->waitForButton('Remove'); + $this->assertNotEmpty($result); + $page->pressButton('Save'); + + $assert_session->pageTextContains("$type_name Audio media asset has been created."); + $assert_session->elementExists('css', "audio > source[type='audio/mpeg']"); + } + + /** + * Check the Video source functionality. + */ + public function testVideoTypeCreation() { + $assert_session = $this->assertSession(); + $page = $this->getSession()->getPage(); + + $source_id = 'video_file'; + $type_name = 'video_type'; + $field_name = 'field_media_' . $source_id; + $this->doTestCreateMediaType($type_name, $source_id); + + // Check that the source field was created with the correct settings. + $storage = FieldStorageConfig::load("media.$field_name"); + $this->assertInstanceOf(FieldStorageConfig::class, $storage); + $field = FieldConfig::load("media.$type_name.$field_name"); + $this->assertInstanceOf(FieldConfig::class, $field); + $this->assertSame('mp4', FieldConfig::load("media.$type_name.$field_name")->getSetting('file_extensions')); + + // Check that the display holds the correct formatter configuration. + $display = EntityViewDisplay::load("media.$type_name.default"); + $this->assertInstanceOf(EntityViewDisplay::class, $display); + $formatter = $display->getComponent($field_name)['type']; + $this->assertSame('file_video', $formatter); + + // Create a media asset and verify that the <video> tag is present. + file_put_contents('public://file.mp4', str_repeat('t', 10)); + $file = File::create([ + 'uri' => 'public://file.mp4', + 'filename' => 'file.mp4', + ]); + $file->save(); + + $this->drupalGet("media/add/$type_name"); + $page->fillField('Name', 'Video media asset'); + $page->attachFileToField("files[{$field_name}_0]", \Drupal::service('file_system')->realpath('public://file.mp4')); + $result = $assert_session->waitForButton('Remove'); + $this->assertNotEmpty($result); + $page->pressButton('Save'); + + $assert_session->pageTextContains("$type_name Video media asset has been created."); + $assert_session->elementExists('css', "video > source[type='video/mp4']"); + } + +}