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 }
|