public function MediaUiFunctionalTest::testMediaWithOnlyOneMediaType in Drupal 9
Same name and namespace in other branches
- 8 core/modules/media/tests/src/Functional/MediaUiFunctionalTest.php \Drupal\Tests\media\Functional\MediaUiFunctionalTest::testMediaWithOnlyOneMediaType()
Tests the media actions (add/edit/delete).
File
- core/
modules/ media/ tests/ src/ Functional/ MediaUiFunctionalTest.php, line 45
Class
- MediaUiFunctionalTest
- Ensures that media UI works correctly.
Namespace
Drupal\Tests\media\FunctionalCode
public function testMediaWithOnlyOneMediaType() {
$session = $this
->getSession();
$page = $session
->getPage();
$assert_session = $this
->assertSession();
$media_type = $this
->createMediaType('test', [
'queue_thumbnail_downloads' => FALSE,
]);
$this
->drupalGet('media/add');
$assert_session
->statusCodeEquals(200);
$assert_session
->addressEquals('media/add/' . $media_type
->id());
$assert_session
->elementNotExists('css', '#edit-revision');
// Tests media add form.
$media_name = $this
->randomMachineName();
$page
->fillField('name[0][value]', $media_name);
$revision_log_message = $this
->randomString();
$page
->fillField('revision_log_message[0][value]', $revision_log_message);
$source_field = $this
->randomString();
$page
->fillField('field_media_test[0][value]', $source_field);
$page
->pressButton('Save');
$media_id = $this->container
->get('entity_type.manager')
->getStorage('media')
->getQuery()
->accessCheck(FALSE)
->execute();
$media_id = reset($media_id);
/** @var \Drupal\media\MediaInterface $media */
$media = $this->container
->get('entity_type.manager')
->getStorage('media')
->loadUnchanged($media_id);
$this
->assertSame($media
->getRevisionLogMessage(), $revision_log_message);
$this
->assertSame($media
->getName(), $media_name);
// Tests media edit form.
$media_type
->setNewRevision(FALSE);
$media_type
->save();
$media_name2 = $this
->randomMachineName();
$this
->drupalGet('media/' . $media_id . '/edit');
$assert_session
->checkboxNotChecked('edit-revision');
$media_name = $this
->randomMachineName();
$page
->fillField('name[0][value]', $media_name2);
$page
->pressButton('Save');
/** @var \Drupal\media\MediaInterface $media */
$media = $this->container
->get('entity_type.manager')
->getStorage('media')
->loadUnchanged($media_id);
$this
->assertSame($media
->getName(), $media_name2);
// Test that there is no empty vertical tabs element, if the container is
// empty (see #2750697).
// Make the "Publisher ID" and "Created" fields hidden.
$this
->drupalGet('/admin/structure/media/manage/' . $media_type
->id() . '/form-display');
$page
->selectFieldOption('fields[created][parent]', 'hidden');
$page
->selectFieldOption('fields[uid][parent]', 'hidden');
$page
->pressButton('Save');
// Assure we are testing with a user without permission to manage revisions.
$this
->drupalLogin($this->nonAdminUser);
// Check the container is not present.
$this
->drupalGet('media/' . $media_id . '/edit');
$assert_session
->elementNotExists('css', 'input.vertical-tabs__active-tab');
// Continue testing as admin.
$this
->drupalLogin($this->adminUser);
// Enable revisions by default.
$previous_revision_id = $media
->getRevisionId();
$media_type
->setNewRevision(TRUE);
$media_type
->save();
$this
->drupalGet('media/' . $media_id . '/edit');
$assert_session
->checkboxChecked('edit-revision');
$page
->fillField('name[0][value]', $media_name);
$page
->fillField('revision_log_message[0][value]', $revision_log_message);
$page
->pressButton('Save');
$this
->drupalGet('media/' . $media_id);
$assert_session
->statusCodeEquals(404);
/** @var \Drupal\media\MediaInterface $media */
$media = $this->container
->get('entity_type.manager')
->getStorage('media')
->loadUnchanged($media_id);
$this
->assertSame($media
->getRevisionLogMessage(), $revision_log_message);
$this
->assertNotEquals($previous_revision_id, $media
->getRevisionId());
// Test the status checkbox.
$this
->drupalGet('media/' . $media_id . '/edit');
$page
->uncheckField('status[value]');
$page
->pressButton('Save');
/** @var \Drupal\media\MediaInterface $media */
$media = $this->container
->get('entity_type.manager')
->getStorage('media')
->loadUnchanged($media_id);
$this
->assertFalse($media
->isPublished());
// Tests media delete form.
$this
->drupalGet('media/' . $media_id . '/edit');
$page
->clickLink('Delete');
$assert_session
->pageTextContains('This action cannot be undone');
$page
->pressButton('Delete');
$media_id = \Drupal::entityQuery('media')
->accessCheck(FALSE)
->execute();
$this
->assertEmpty($media_id);
}