You are here

public function MediaSourceAudioVideoTest::testAudioTypeCreation in Drupal 8

Same name and namespace in other branches
  1. 9 core/modules/media/tests/src/FunctionalJavascript/MediaSourceAudioVideoTest.php \Drupal\Tests\media\FunctionalJavascript\MediaSourceAudioVideoTest::testAudioTypeCreation()

Check the Audio source functionality.

File

core/modules/media/tests/src/FunctionalJavascript/MediaSourceAudioVideoTest.php, line 25

Class

MediaSourceAudioVideoTest
Tests the Audio and Video media sources.

Namespace

Drupal\Tests\media\FunctionalJavascript

Code

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.
  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');

  // Verify that there is a creation message and that it contains a link to
  // the media entity.
  $assert_session
    ->pageTextContains("{$type_name} Audio media asset has been created.");
  $this
    ->drupalGet($this
    ->assertLinkToCreatedMedia());

  // Verify that the <audio> tag is present on the media entity view.
  $assert_session
    ->elementExists('css', "audio > source[type='audio/mpeg']");
}