annotate core/modules/media/tests/src/Functional/MediaUiFunctionalTest.php @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children 1fec387a4317
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\Tests\media\Functional;
Chris@0 4
Chris@0 5 use Drupal\media\Entity\Media;
Chris@0 6 use Drupal\media\Entity\MediaType;
Chris@0 7
Chris@0 8 /**
Chris@0 9 * Ensures that media UI works correctly.
Chris@0 10 *
Chris@0 11 * @group media
Chris@0 12 */
Chris@0 13 class MediaUiFunctionalTest extends MediaFunctionalTestBase {
Chris@0 14
Chris@0 15 /**
Chris@0 16 * Modules to enable.
Chris@0 17 *
Chris@0 18 * @var array
Chris@0 19 */
Chris@0 20 public static $modules = [
Chris@0 21 'block',
Chris@0 22 'media_test_source',
Chris@0 23 ];
Chris@0 24
Chris@0 25 /**
Chris@0 26 * {@inheritdoc}
Chris@0 27 */
Chris@0 28 protected function setUp() {
Chris@0 29 parent::setUp();
Chris@0 30 $this->drupalPlaceBlock('local_actions_block');
Chris@0 31 $this->drupalPlaceBlock('local_tasks_block');
Chris@0 32
Chris@0 33 // We need to test without any default configuration in place.
Chris@0 34 // @TODO: Remove this when https://www.drupal.org/node/2883813 lands.
Chris@0 35 MediaType::load('file')->delete();
Chris@0 36 MediaType::load('image')->delete();
Chris@0 37 }
Chris@0 38
Chris@0 39 /**
Chris@0 40 * Tests the media actions (add/edit/delete).
Chris@0 41 */
Chris@0 42 public function testMediaWithOnlyOneMediaType() {
Chris@0 43 $session = $this->getSession();
Chris@0 44 $page = $session->getPage();
Chris@0 45 $assert_session = $this->assertSession();
Chris@0 46
Chris@0 47 $media_type = $this->createMediaType([
Chris@0 48 'new_revision' => FALSE,
Chris@0 49 'queue_thumbnail_downloads' => FALSE,
Chris@0 50 ]);
Chris@0 51
Chris@0 52 $this->drupalGet('media/add');
Chris@0 53 $assert_session->statusCodeEquals(200);
Chris@0 54 $assert_session->addressEquals('media/add/' . $media_type->id());
Chris@0 55 $assert_session->elementNotExists('css', '#edit-revision');
Chris@0 56
Chris@0 57 // Tests media add form.
Chris@0 58 $media_name = $this->randomMachineName();
Chris@0 59 $page->fillField('name[0][value]', $media_name);
Chris@0 60 $revision_log_message = $this->randomString();
Chris@0 61 $page->fillField('revision_log_message[0][value]', $revision_log_message);
Chris@0 62 $page->pressButton('Save');
Chris@0 63 $media_id = $this->container->get('entity.query')->get('media')->execute();
Chris@0 64 $media_id = reset($media_id);
Chris@0 65 /** @var \Drupal\media\MediaInterface $media */
Chris@0 66 $media = $this->container->get('entity_type.manager')
Chris@0 67 ->getStorage('media')
Chris@0 68 ->loadUnchanged($media_id);
Chris@0 69 $this->assertEquals($media->getRevisionLogMessage(), $revision_log_message);
Chris@0 70 $this->assertEquals($media->getName(), $media_name);
Chris@0 71 $assert_session->titleEquals($media_name . ' | Drupal');
Chris@0 72
Chris@0 73 // Tests media edit form.
Chris@0 74 $media_type->setNewRevision(FALSE);
Chris@0 75 $media_type->save();
Chris@0 76 $media_name2 = $this->randomMachineName();
Chris@0 77 $this->drupalGet('media/' . $media_id . '/edit');
Chris@0 78 $assert_session->checkboxNotChecked('edit-revision');
Chris@0 79 $media_name = $this->randomMachineName();
Chris@0 80 $page->fillField('name[0][value]', $media_name2);
Chris@0 81 $page->pressButton('Save');
Chris@0 82 /** @var \Drupal\media\MediaInterface $media */
Chris@0 83 $media = $this->container->get('entity_type.manager')
Chris@0 84 ->getStorage('media')
Chris@0 85 ->loadUnchanged($media_id);
Chris@0 86 $this->assertEquals($media->getName(), $media_name2);
Chris@0 87 $assert_session->titleEquals($media_name2 . ' | Drupal');
Chris@0 88
Chris@0 89 // Test that there is no empty vertical tabs element, if the container is
Chris@0 90 // empty (see #2750697).
Chris@0 91 // Make the "Publisher ID" and "Created" fields hidden.
Chris@0 92 $this->drupalGet('/admin/structure/media/manage/' . $media_type->id() . '/form-display');
Chris@0 93 $page->selectFieldOption('fields[created][parent]', 'hidden');
Chris@0 94 $page->selectFieldOption('fields[uid][parent]', 'hidden');
Chris@0 95 $page->pressButton('Save');
Chris@0 96 // Assure we are testing with a user without permission to manage revisions.
Chris@0 97 $this->drupalLogin($this->nonAdminUser);
Chris@0 98 // Check the container is not present.
Chris@0 99 $this->drupalGet('media/' . $media_id . '/edit');
Chris@0 100 $assert_session->elementNotExists('css', 'input.vertical-tabs__active-tab');
Chris@0 101 // Continue testing as admin.
Chris@0 102 $this->drupalLogin($this->adminUser);
Chris@0 103
Chris@0 104 // Enable revisions by default.
Chris@0 105 $previous_revision_id = $media->getRevisionId();
Chris@0 106 $media_type->setNewRevision(TRUE);
Chris@0 107 $media_type->save();
Chris@0 108 $this->drupalGet('media/' . $media_id . '/edit');
Chris@0 109 $assert_session->checkboxChecked('edit-revision');
Chris@0 110 $page->fillField('name[0][value]', $media_name);
Chris@0 111 $page->fillField('revision_log_message[0][value]', $revision_log_message);
Chris@0 112 $page->pressButton('Save');
Chris@0 113 $assert_session->titleEquals($media_name . ' | Drupal');
Chris@0 114 /** @var \Drupal\media\MediaInterface $media */
Chris@0 115 $media = $this->container->get('entity_type.manager')
Chris@0 116 ->getStorage('media')
Chris@0 117 ->loadUnchanged($media_id);
Chris@0 118 $this->assertEquals($media->getRevisionLogMessage(), $revision_log_message);
Chris@0 119 $this->assertNotEquals($previous_revision_id, $media->getRevisionId());
Chris@0 120
Chris@0 121 // Test the status checkbox.
Chris@0 122 $this->drupalGet('media/' . $media_id . '/edit');
Chris@0 123 $page->uncheckField('status[value]');
Chris@0 124 $page->pressButton('Save');
Chris@0 125 /** @var \Drupal\media\MediaInterface $media */
Chris@0 126 $media = $this->container->get('entity_type.manager')
Chris@0 127 ->getStorage('media')
Chris@0 128 ->loadUnchanged($media_id);
Chris@0 129 $this->assertFalse($media->isPublished());
Chris@0 130
Chris@0 131 // Tests media delete form.
Chris@0 132 $this->drupalGet('media/' . $media_id . '/edit');
Chris@0 133 $page->clickLink('Delete');
Chris@0 134 $assert_session->pageTextContains('This action cannot be undone');
Chris@0 135 $page->pressButton('Delete');
Chris@0 136 $media_id = \Drupal::entityQuery('media')->execute();
Chris@0 137 $this->assertFalse($media_id);
Chris@0 138 }
Chris@0 139
Chris@0 140 /**
Chris@0 141 * Tests the "media/add" and "media/mid" pages.
Chris@0 142 *
Chris@0 143 * Tests if the "media/add" page gives you a selecting option if there are
Chris@0 144 * multiple media types available.
Chris@0 145 */
Chris@0 146 public function testMediaWithMultipleMediaTypes() {
Chris@0 147 $assert_session = $this->assertSession();
Chris@0 148
Chris@0 149 // Tests and creates the first media type.
Chris@0 150 $first_media_type = $this->createMediaType(['description' => $this->randomMachineName(32)]);
Chris@0 151
Chris@0 152 // Test and create a second media type.
Chris@0 153 $second_media_type = $this->createMediaType(['description' => $this->randomMachineName(32)]);
Chris@0 154
Chris@0 155 // Test if media/add displays two media type options.
Chris@0 156 $this->drupalGet('media/add');
Chris@0 157
Chris@0 158 // Checks for the first media type.
Chris@0 159 $assert_session->pageTextContains($first_media_type->label());
Chris@0 160 $assert_session->pageTextContains($first_media_type->getDescription());
Chris@0 161 // Checks for the second media type.
Chris@0 162 $assert_session->pageTextContains($second_media_type->label());
Chris@0 163 $assert_session->pageTextContains($second_media_type->getDescription());
Chris@0 164
Chris@0 165 // Continue testing media type filter.
Chris@0 166 $first_media_item = Media::create(['bundle' => $first_media_type->id()]);
Chris@0 167 $first_media_item->save();
Chris@0 168 $second_media_item = Media::create(['bundle' => $second_media_type->id()]);
Chris@0 169 $second_media_item->save();
Chris@0 170
Chris@0 171 // Go to first media item.
Chris@0 172 $this->drupalGet('media/' . $first_media_item->id());
Chris@0 173 $assert_session->statusCodeEquals(200);
Chris@0 174 $assert_session->pageTextContains($first_media_item->getName());
Chris@0 175
Chris@0 176 // Go to second media item.
Chris@0 177 $this->drupalGet('media/' . $second_media_item->id());
Chris@0 178 $assert_session->statusCodeEquals(200);
Chris@0 179 $assert_session->pageTextContains($second_media_item->getName());
Chris@0 180 }
Chris@0 181
Chris@0 182 }