3 namespace Drupal\Tests\media\Functional;
5 use Drupal\media\Entity\Media;
6 use Drupal\user\Entity\Role;
7 use Drupal\user\RoleInterface;
10 * Tests the Media overview page.
14 class MediaOverviewPageTest extends MediaFunctionalTestBase {
19 protected function setUp() {
21 $this->drupalLogin($this->nonAdminUser);
25 * Test that the Media overview page (/admin/content/media).
27 public function testMediaOverviewPage() {
28 $assert_session = $this->assertSession();
30 // Check the view exists, is access-restricted, and some defaults are there.
31 $this->drupalGet('/admin/content/media');
32 $assert_session->statusCodeEquals(403);
33 $role = Role::load(RoleInterface::AUTHENTICATED_ID);
34 $this->grantPermissions($role, ['access media overview']);
35 $this->drupalGet('/admin/content/media');
36 $assert_session->statusCodeEquals(200);
37 $assert_session->titleEquals('Media | Drupal');
38 $assert_session->fieldExists('Media name');
39 $assert_session->selectExists('type');
40 $assert_session->selectExists('status');
41 $assert_session->selectExists('langcode');
42 $assert_session->buttonExists('Filter');
43 $header = $assert_session->elementExists('css', 'th#view-thumbnail-target-id-table-column');
44 $this->assertEquals('Thumbnail', $header->getText());
45 $header = $assert_session->elementExists('css', 'th#view-name-table-column');
46 $this->assertEquals('Media name', $header->getText());
47 $header = $assert_session->elementExists('css', 'th#view-bundle-table-column');
48 $this->assertEquals('Type', $header->getText());
49 $header = $assert_session->elementExists('css', 'th#view-uid-table-column');
50 $this->assertEquals('Author', $header->getText());
51 $header = $assert_session->elementExists('css', 'th#view-status-table-column');
52 $this->assertEquals('Status', $header->getText());
53 $header = $assert_session->elementExists('css', 'th#view-changed-table-column');
54 $this->assertEquals('Updated Sort ascending', $header->getText());
55 $header = $assert_session->elementExists('css', 'th#view-operations-table-column');
56 $this->assertEquals('Operations', $header->getText());
57 $assert_session->pageTextContains('No content available.');
59 // Create some content for the view.
60 $media_type1 = $this->createMediaType();
61 $media_type2 = $this->createMediaType();
62 $media1 = Media::create([
63 'bundle' => $media_type1->id(),
65 'uid' => $this->adminUser->id(),
68 $media2 = Media::create([
69 'bundle' => $media_type2->id(),
71 'uid' => $this->adminUser->id(),
75 $media3 = Media::create([
76 'bundle' => $media_type1->id(),
78 'uid' => $this->nonAdminUser->id(),
82 // Verify the view is now correctly populated.
83 $this->grantPermissions($role, [
88 $this->drupalGet('/admin/content/media');
89 $row1 = $assert_session->elementExists('css', 'table tbody tr:nth-child(1)');
90 $row2 = $assert_session->elementExists('css', 'table tbody tr:nth-child(2)');
91 $row3 = $assert_session->elementExists('css', 'table tbody tr:nth-child(3)');
94 $assert_session->elementExists('css', 'td.views-field-thumbnail__target-id img', $row1);
95 $assert_session->elementExists('css', 'td.views-field-thumbnail__target-id img', $row2);
96 $assert_session->elementExists('css', 'td.views-field-thumbnail__target-id img', $row3);
99 $name1 = $assert_session->elementExists('css', 'td.views-field-name a', $row1);
100 $this->assertEquals($media1->label(), $name1->getText());
101 $name2 = $assert_session->elementExists('css', 'td.views-field-name a', $row2);
102 $this->assertEquals($media2->label(), $name2->getText());
103 $name3 = $assert_session->elementExists('css', 'td.views-field-name a', $row3);
104 $this->assertEquals($media3->label(), $name3->getText());
105 $assert_session->linkByHrefExists('/media/' . $media1->id());
106 $assert_session->linkByHrefExists('/media/' . $media2->id());
107 $assert_session->linkByHrefExists('/media/' . $media3->id());
110 $type_element1 = $assert_session->elementExists('css', 'td.views-field-bundle', $row1);
111 $this->assertEquals($media_type1->label(), $type_element1->getText());
112 $type_element2 = $assert_session->elementExists('css', 'td.views-field-bundle', $row2);
113 $this->assertEquals($media_type2->label(), $type_element2->getText());
114 $type_element3 = $assert_session->elementExists('css', 'td.views-field-bundle', $row3);
115 $this->assertEquals($media_type1->label(), $type_element3->getText());
118 $author_element1 = $assert_session->elementExists('css', 'td.views-field-uid', $row1);
119 $this->assertEquals($this->adminUser->getDisplayName(), $author_element1->getText());
120 $author_element2 = $assert_session->elementExists('css', 'td.views-field-uid', $row2);
121 $this->assertEquals($this->adminUser->getDisplayName(), $author_element2->getText());
122 $author_element3 = $assert_session->elementExists('css', 'td.views-field-uid', $row3);
123 $this->assertEquals($this->nonAdminUser->getDisplayName(), $author_element3->getText());
125 // Media publishing status.
126 $status_element1 = $assert_session->elementExists('css', 'td.views-field-status', $row1);
127 $this->assertEquals('Published', $status_element1->getText());
128 $status_element2 = $assert_session->elementExists('css', 'td.views-field-status', $row2);
129 $this->assertEquals('Unpublished', $status_element2->getText());
130 $status_element3 = $assert_session->elementExists('css', 'td.views-field-status', $row3);
131 $this->assertEquals('Published', $status_element3->getText());
134 $expected = \Drupal::service('date.formatter')->format($media1->getChangedTime(), 'short');
135 $changed_element1 = $assert_session->elementExists('css', 'td.views-field-changed', $row1);
136 $this->assertEquals($expected, $changed_element1->getText());
139 $edit_link1 = $assert_session->elementExists('css', 'td.views-field-operations li.edit a', $row1);
140 $this->assertEquals('Edit', $edit_link1->getText());
141 $assert_session->linkByHrefExists('/media/' . $media1->id() . '/edit');
142 $delete_link1 = $assert_session->elementExists('css', 'td.views-field-operations li.delete a', $row1);
143 $this->assertEquals('Delete', $delete_link1->getText());
144 $assert_session->linkByHrefExists('/media/' . $media1->id() . '/delete');