MediaUiFunctionalTest.php in Media entity 8
File
tests/src/Functional/MediaUiFunctionalTest.php
View source
<?php
namespace Drupal\Tests\media_entity\Functional;
use Drupal\media_entity\Entity\Media;
class MediaUiFunctionalTest extends MediaEntityFunctionalTestBase {
public static $modules = [
'block',
'media_entity_test_type',
];
protected $testBundle;
protected function setUp() {
parent::setUp();
$this
->drupalPlaceBlock('local_actions_block');
$this
->drupalPlaceBlock('local_tasks_block');
}
public function testMediaWithOnlyOneBundle() {
$session = $this
->getSession();
$page = $session
->getPage();
$assert_session = $this
->assertSession();
$bundle = $this
->drupalCreateMediaBundle();
$this
->drupalGet('admin/content/media');
$assert_session
->statusCodeEquals(200);
$assert_session
->pageTextContains('No content available.');
$this
->drupalGet('media/add');
$assert_session
->statusCodeEquals(200);
$assert_session
->addressEquals('media/add/' . $bundle
->id());
$assert_session
->checkboxChecked('edit-revision');
$media_name = $this
->randomMachineName();
$page
->fillField('name[0][value]', $media_name);
$revision_log_message = $this
->randomString();
$page
->fillField('revision_log', $revision_log_message);
$page
->pressButton('Save and publish');
$media_id = $this->container
->get('entity.query')
->get('media')
->execute();
$media_id = reset($media_id);
$media = $this->container
->get('entity_type.manager')
->getStorage('media')
->loadUnchanged($media_id);
$this
->assertEquals($media
->getRevisionLogMessage(), $revision_log_message);
$assert_session
->titleEquals($media
->label() . ' | Drupal');
$this
->drupalGet('admin/content/media');
$assert_session
->statusCodeEquals(200);
$assert_session
->pageTextContains($media
->label());
$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 and keep published');
$assert_session
->titleEquals($media_name2 . ' | Drupal');
$this
->drupalGet('admin/content/media');
$assert_session
->statusCodeEquals(200);
$assert_session
->pageTextContains($media_name2);
$this
->drupalGet('/admin/structure/media/manage/' . $bundle->id . '/form-display');
$page
->selectFieldOption('fields[created][parent]', 'hidden');
$page
->selectFieldOption('fields[uid][parent]', 'hidden');
$page
->pressButton('Save');
$this
->drupalLogin($this->nonAdminUser);
$this
->drupalGet('media/' . $media_id . '/edit');
$raw_html = '<div data-drupal-selector="edit-advanced" data-vertical-tabs-panes><input class="vertical-tabs__active-tab" data-drupal-selector="edit-advanced-active-tab" type="hidden" name="advanced__active_tab" value="" />' . "\n" . '</div>';
$assert_session
->responseNotContains($raw_html);
$this
->drupalLogin($this->adminUser);
$bundle
->setNewRevision(TRUE);
$bundle
->save();
$this
->drupalGet('media/' . $media_id . '/edit');
$assert_session
->checkboxChecked('edit-revision');
$page
->fillField('name[0][value]', $media_name);
$page
->fillField('revision_log', $revision_log_message);
$page
->pressButton('Save and keep published');
$assert_session
->titleEquals($media_name . ' | Drupal');
$media = $this->container
->get('entity_type.manager')
->getStorage('media')
->loadUnchanged($media_id);
$this
->assertEquals($media
->getRevisionLogMessage(), $revision_log_message);
$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')
->execute();
$this
->assertFalse($media_id);
$this
->drupalGet('admin/content/media');
$assert_session
->statusCodeEquals(200);
$assert_session
->pageTextNotContains($media_name);
$assert_session
->pageTextContains('No content available.');
}
public function testMediaWithMultipleBundles() {
$session = $this
->getSession();
$page = $session
->getPage();
$assert_session = $this
->assertSession();
$this
->drupalLogout();
$this
->drupalGet('admin/content/media');
$assert_session
->statusCodeEquals(403);
$this
->drupalLogin($this->adminUser);
$this
->drupalGet('admin/content');
$page
->clickLink('Media');
$assert_session
->statusCodeEquals(200);
$assert_session
->pageTextContains('No content available.');
$first_media_bundle = $this
->drupalCreateMediaBundle([
'description' => $this
->randomMachineName(32),
]);
$second_media_bundle = $this
->drupalCreateMediaBundle([
'description' => $this
->randomMachineName(32),
]);
$this
->drupalGet('media/add');
$assert_session
->pageTextContains($first_media_bundle
->label());
$assert_session
->pageTextContains($first_media_bundle->description);
$assert_session
->pageTextContains($second_media_bundle
->label());
$assert_session
->pageTextContains($second_media_bundle->description);
$first_media_item = Media::create([
'bundle' => $first_media_bundle
->id(),
]);
$first_media_item
->save();
$second_media_item = Media::create([
'bundle' => $second_media_bundle
->id(),
]);
$second_media_item
->save();
$this
->drupalGet('admin/content/media');
$assert_session
->statusCodeEquals(200);
$assert_session
->linkExists('Add media');
$assert_session
->pageTextContains($first_media_item
->label());
$assert_session
->pageTextContains($first_media_bundle
->label());
$assert_session
->pageTextContains($second_media_item
->label());
$assert_session
->pageTextContains($second_media_bundle
->label());
$this
->drupalGet('admin/content/media', [
'query' => [
'provider' => $first_media_bundle
->id(),
],
]);
$assert_session
->statusCodeEquals(200);
$assert_session
->pageTextContains($first_media_item
->label());
$assert_session
->pageTextNotContains($second_media_item
->label());
$this
->drupalGet('admin/content/media', [
'query' => [
'provider' => 'All',
],
]);
$assert_session
->statusCodeEquals(200);
$assert_session
->pageTextContains($first_media_item
->label());
$assert_session
->pageTextContains($first_media_bundle
->label());
$assert_session
->pageTextContains($second_media_item
->label());
$assert_session
->pageTextContains($second_media_bundle
->label());
}
}