function MediaSourceAudioVideoTest::testAudioTypeCreation

Same name and namespace in other branches
  1. 9 core/modules/media/tests/src/FunctionalJavascript/MediaSourceAudioVideoTest.php \Drupal\Tests\media\FunctionalJavascript\MediaSourceAudioVideoTest::testAudioTypeCreation()
  2. 8.9.x core/modules/media/tests/src/FunctionalJavascript/MediaSourceAudioVideoTest.php \Drupal\Tests\media\FunctionalJavascript\MediaSourceAudioVideoTest::testAudioTypeCreation()
  3. 10 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 27

Class

MediaSourceAudioVideoTest
Tests the Audio and Video media sources.

Namespace

Drupal\Tests\media\FunctionalJavascript

Code

public function testAudioTypeCreation() : void {
    $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']");
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.