annotate core/modules/media/tests/src/Functional/MediaOverviewPageTest.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 129ea1e6d783
children
rev   line source
Chris@14 1 <?php
Chris@14 2
Chris@14 3 namespace Drupal\Tests\media\Functional;
Chris@14 4
Chris@14 5 use Drupal\media\Entity\Media;
Chris@14 6 use Drupal\user\Entity\Role;
Chris@14 7 use Drupal\user\RoleInterface;
Chris@14 8
Chris@14 9 /**
Chris@14 10 * Tests the Media overview page.
Chris@14 11 *
Chris@14 12 * @group media
Chris@14 13 */
Chris@14 14 class MediaOverviewPageTest extends MediaFunctionalTestBase {
Chris@14 15
Chris@14 16 /**
Chris@14 17 * {@inheritdoc}
Chris@14 18 */
Chris@14 19 protected function setUp() {
Chris@14 20 parent::setUp();
Chris@14 21 $this->drupalLogin($this->nonAdminUser);
Chris@14 22 }
Chris@14 23
Chris@14 24 /**
Chris@14 25 * Test that the Media overview page (/admin/content/media).
Chris@14 26 */
Chris@14 27 public function testMediaOverviewPage() {
Chris@14 28 $assert_session = $this->assertSession();
Chris@14 29
Chris@14 30 // Check the view exists, is access-restricted, and some defaults are there.
Chris@14 31 $this->drupalGet('/admin/content/media');
Chris@14 32 $assert_session->statusCodeEquals(403);
Chris@14 33 $role = Role::load(RoleInterface::AUTHENTICATED_ID);
Chris@14 34 $this->grantPermissions($role, ['access media overview']);
Chris@14 35 $this->drupalGet('/admin/content/media');
Chris@14 36 $assert_session->statusCodeEquals(200);
Chris@14 37 $assert_session->titleEquals('Media | Drupal');
Chris@14 38 $assert_session->fieldExists('Media name');
Chris@14 39 $assert_session->selectExists('type');
Chris@14 40 $assert_session->selectExists('status');
Chris@14 41 $assert_session->selectExists('langcode');
Chris@14 42 $assert_session->buttonExists('Filter');
Chris@14 43 $header = $assert_session->elementExists('css', 'th#view-thumbnail-target-id-table-column');
Chris@17 44 $this->assertSame('Thumbnail', $header->getText());
Chris@14 45 $header = $assert_session->elementExists('css', 'th#view-name-table-column');
Chris@17 46 $this->assertSame('Media name', $header->getText());
Chris@14 47 $header = $assert_session->elementExists('css', 'th#view-bundle-table-column');
Chris@17 48 $this->assertSame('Type', $header->getText());
Chris@14 49 $header = $assert_session->elementExists('css', 'th#view-uid-table-column');
Chris@17 50 $this->assertSame('Author', $header->getText());
Chris@14 51 $header = $assert_session->elementExists('css', 'th#view-status-table-column');
Chris@17 52 $this->assertSame('Status', $header->getText());
Chris@14 53 $header = $assert_session->elementExists('css', 'th#view-changed-table-column');
Chris@17 54 $this->assertSame('Updated Sort ascending', $header->getText());
Chris@14 55 $header = $assert_session->elementExists('css', 'th#view-operations-table-column');
Chris@17 56 $this->assertSame('Operations', $header->getText());
Chris@17 57 $assert_session->pageTextContains('No media available.');
Chris@14 58
Chris@14 59 // Create some content for the view.
Chris@17 60 $media_type1 = $this->createMediaType('test');
Chris@17 61 $media_type2 = $this->createMediaType('test');
Chris@14 62 $media1 = Media::create([
Chris@14 63 'bundle' => $media_type1->id(),
Chris@14 64 'name' => 'Media 1',
Chris@14 65 'uid' => $this->adminUser->id(),
Chris@14 66 ]);
Chris@14 67 $media1->save();
Chris@14 68 $media2 = Media::create([
Chris@14 69 'bundle' => $media_type2->id(),
Chris@14 70 'name' => 'Media 2',
Chris@14 71 'uid' => $this->adminUser->id(),
Chris@14 72 'status' => FALSE,
Chris@14 73 ]);
Chris@14 74 $media2->save();
Chris@14 75 $media3 = Media::create([
Chris@14 76 'bundle' => $media_type1->id(),
Chris@14 77 'name' => 'Media 3',
Chris@14 78 'uid' => $this->nonAdminUser->id(),
Chris@14 79 ]);
Chris@14 80 $media3->save();
Chris@14 81
Chris@14 82 // Verify the view is now correctly populated.
Chris@14 83 $this->grantPermissions($role, [
Chris@14 84 'view media',
Chris@14 85 'update any media',
Chris@14 86 'delete any media',
Chris@14 87 ]);
Chris@14 88 $this->drupalGet('/admin/content/media');
Chris@14 89 $row1 = $assert_session->elementExists('css', 'table tbody tr:nth-child(1)');
Chris@14 90 $row2 = $assert_session->elementExists('css', 'table tbody tr:nth-child(2)');
Chris@14 91 $row3 = $assert_session->elementExists('css', 'table tbody tr:nth-child(3)');
Chris@14 92
Chris@14 93 // Media thumbnails.
Chris@14 94 $assert_session->elementExists('css', 'td.views-field-thumbnail__target-id img', $row1);
Chris@14 95 $assert_session->elementExists('css', 'td.views-field-thumbnail__target-id img', $row2);
Chris@14 96 $assert_session->elementExists('css', 'td.views-field-thumbnail__target-id img', $row3);
Chris@14 97
Chris@14 98 // Media names.
Chris@14 99 $name1 = $assert_session->elementExists('css', 'td.views-field-name a', $row1);
Chris@17 100 $this->assertSame($media1->label(), $name1->getText());
Chris@14 101 $name2 = $assert_session->elementExists('css', 'td.views-field-name a', $row2);
Chris@17 102 $this->assertSame($media2->label(), $name2->getText());
Chris@14 103 $name3 = $assert_session->elementExists('css', 'td.views-field-name a', $row3);
Chris@17 104 $this->assertSame($media3->label(), $name3->getText());
Chris@14 105 $assert_session->linkByHrefExists('/media/' . $media1->id());
Chris@14 106 $assert_session->linkByHrefExists('/media/' . $media2->id());
Chris@14 107 $assert_session->linkByHrefExists('/media/' . $media3->id());
Chris@14 108
Chris@14 109 // Media types.
Chris@14 110 $type_element1 = $assert_session->elementExists('css', 'td.views-field-bundle', $row1);
Chris@17 111 $this->assertSame($media_type1->label(), $type_element1->getText());
Chris@14 112 $type_element2 = $assert_session->elementExists('css', 'td.views-field-bundle', $row2);
Chris@17 113 $this->assertSame($media_type2->label(), $type_element2->getText());
Chris@14 114 $type_element3 = $assert_session->elementExists('css', 'td.views-field-bundle', $row3);
Chris@17 115 $this->assertSame($media_type1->label(), $type_element3->getText());
Chris@14 116
Chris@14 117 // Media authors.
Chris@14 118 $author_element1 = $assert_session->elementExists('css', 'td.views-field-uid', $row1);
Chris@17 119 $this->assertSame($this->adminUser->getDisplayName(), $author_element1->getText());
Chris@14 120 $author_element2 = $assert_session->elementExists('css', 'td.views-field-uid', $row2);
Chris@17 121 $this->assertSame($this->adminUser->getDisplayName(), $author_element2->getText());
Chris@14 122 $author_element3 = $assert_session->elementExists('css', 'td.views-field-uid', $row3);
Chris@17 123 $this->assertSame($this->nonAdminUser->getDisplayName(), $author_element3->getText());
Chris@14 124
Chris@14 125 // Media publishing status.
Chris@14 126 $status_element1 = $assert_session->elementExists('css', 'td.views-field-status', $row1);
Chris@17 127 $this->assertSame('Published', $status_element1->getText());
Chris@14 128 $status_element2 = $assert_session->elementExists('css', 'td.views-field-status', $row2);
Chris@17 129 $this->assertSame('Unpublished', $status_element2->getText());
Chris@14 130 $status_element3 = $assert_session->elementExists('css', 'td.views-field-status', $row3);
Chris@17 131 $this->assertSame('Published', $status_element3->getText());
Chris@14 132
Chris@14 133 // Timestamp.
Chris@14 134 $expected = \Drupal::service('date.formatter')->format($media1->getChangedTime(), 'short');
Chris@14 135 $changed_element1 = $assert_session->elementExists('css', 'td.views-field-changed', $row1);
Chris@17 136 $this->assertSame($expected, $changed_element1->getText());
Chris@14 137
Chris@14 138 // Operations.
Chris@14 139 $edit_link1 = $assert_session->elementExists('css', 'td.views-field-operations li.edit a', $row1);
Chris@17 140 $this->assertSame('Edit', $edit_link1->getText());
Chris@14 141 $assert_session->linkByHrefExists('/media/' . $media1->id() . '/edit');
Chris@14 142 $delete_link1 = $assert_session->elementExists('css', 'td.views-field-operations li.delete a', $row1);
Chris@17 143 $this->assertSame('Delete', $delete_link1->getText());
Chris@14 144 $assert_session->linkByHrefExists('/media/' . $media1->id() . '/delete');
Chris@14 145 }
Chris@14 146
Chris@14 147 }