function MediaStandardProfileTest::videoTest
Same name in other branches
- 9 core/modules/media/tests/src/FunctionalJavascript/MediaStandardProfileTest.php \Drupal\Tests\media\FunctionalJavascript\MediaStandardProfileTest::videoTest()
- 8.9.x core/modules/media/tests/src/FunctionalJavascript/MediaStandardProfileTest.php \Drupal\Tests\media\FunctionalJavascript\MediaStandardProfileTest::videoTest()
- 10 core/modules/media/tests/src/FunctionalJavascript/MediaStandardProfileTest.php \Drupal\Tests\media\FunctionalJavascript\MediaStandardProfileTest::videoTest()
Tests the standard profile configuration for media type 'video'.
1 call to MediaStandardProfileTest::videoTest()
- MediaStandardProfileTest::testMediaSources in core/
modules/ media/ tests/ src/ FunctionalJavascript/ MediaStandardProfileTest.php - Tests all media sources in one method.
File
-
core/
modules/ media/ tests/ src/ FunctionalJavascript/ MediaStandardProfileTest.php, line 481
Class
- MediaStandardProfileTest
- Basic tests for Media configuration in the standard profile.
Namespace
Drupal\Tests\media\FunctionalJavascriptCode
protected function videoTest() : void {
$assert_session = $this->assertSession();
$page = $this->getSession()
->getPage();
$source_field_id = 'field_media_video_file';
// Create 2 test files.
$test_filename = $this->randomMachineName() . '.mp4';
$test_filepath = 'public://' . $test_filename;
$test_filename_updated = $this->randomMachineName() . '.mp4';
$test_filepath_updated = 'public://' . $test_filename_updated;
file_put_contents($test_filepath, str_repeat('t', 10));
file_put_contents($test_filepath_updated, str_repeat('u', 10));
// Check if the name field is properly hidden on the media form.
$this->drupalGet('media/add/video');
$assert_session->fieldNotExists('name');
// Check if the source field is available.
$assert_session->fieldExists("files[{$source_field_id}_0]");
// Create a media item.
$page->attachFileToField("files[{$source_field_id}_0]", \Drupal::service('file_system')->realpath($test_filepath));
$result = $assert_session->waitForButton('Remove');
$this->assertNotEmpty($result);
$page->pressButton('Save');
$video_media_id = $this->container
->get('entity_type.manager')
->getStorage('media')
->getQuery()
->accessCheck(FALSE)
->sort('mid', 'DESC')
->execute();
$video_media_id = reset($video_media_id);
// Reference the created media using an entity_reference field and make sure
// the output is what we expect.
$node = Node::create([
'title' => 'Host node',
'type' => 'article',
'field_related_media' => [
'target_id' => $video_media_id,
],
]);
$node->save();
$this->drupalGet('/node/' . $node->id());
// Check if the default media name is generated as expected.
$media = \Drupal::entityTypeManager()->getStorage('media')
->loadUnchanged($video_media_id);
$this->assertSame($test_filename, $media->label());
// Here we expect to see only the linked filename. Assert only one element
// in the content region.
$assert_session->elementsCount('css', 'div.media--type-video > *', 1);
// Assert the video element is present inside the media element and that its
// src attribute matches the video file.
$video_element = $assert_session->elementExists('css', 'div.media--type-video .field--name-field-media-video-file video > source');
/** @var \Drupal\Core\File\FileUrlGeneratorInterface $file_url_generator */
$file_url_generator = \Drupal::service('file_url_generator');
$expected_video_src = $file_url_generator->generate(\Drupal::token()->replace('public://[date:custom:Y]-[date:custom:m]/' . $test_filename))
->toString();
$this->assertSame($expected_video_src, $video_element->getAttribute('src'));
// Assert the media name is updated through the field mapping when changing
// the source field.
$this->drupalGet('media/' . $video_media_id . '/edit');
$page->pressButton('Remove');
$result = $assert_session->waitForField("files[{$source_field_id}_0]");
$this->assertNotEmpty($result);
$page->attachFileToField("files[{$source_field_id}_0]", \Drupal::service('file_system')->realpath($test_filepath_updated));
$result = $assert_session->waitForButton('Remove');
$this->assertNotEmpty($result);
$page->pressButton('Save');
$this->drupalGet('/node/' . $node->id());
// Check if the default media name is updated as expected.
$media = \Drupal::entityTypeManager()->getStorage('media')
->loadUnchanged($video_media_id);
$this->assertSame($test_filename_updated, $media->label());
// Again we expect to see only the linked filename. Assert only one element
// in the content region.
$assert_session->elementsCount('css', 'div.media--type-video > *', 1);
// Assert the video element is present inside the media element and that its
// src attribute matches the updated video file.
$video_element = $assert_session->elementExists('css', 'div.media--type-video .field--name-field-media-video-file video > source');
$expected_video_src = $file_url_generator->generate(\Drupal::token()->replace('public://[date:custom:Y]-[date:custom:m]/' . $test_filename_updated))
->toString();
$this->assertSame($expected_video_src, $video_element->getAttribute('src'));
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.