Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / web / core / modules / media / tests / src / Functional / MediaOverviewPageTest.php
1 <?php
2
3 namespace Drupal\Tests\media\Functional;
4
5 use Drupal\media\Entity\Media;
6 use Drupal\user\Entity\Role;
7 use Drupal\user\RoleInterface;
8
9 /**
10  * Tests the Media overview page.
11  *
12  * @group media
13  */
14 class MediaOverviewPageTest extends MediaFunctionalTestBase {
15
16   /**
17    * {@inheritdoc}
18    */
19   protected function setUp() {
20     parent::setUp();
21     $this->drupalLogin($this->nonAdminUser);
22   }
23
24   /**
25    * Test that the Media overview page (/admin/content/media).
26    */
27   public function testMediaOverviewPage() {
28     $assert_session = $this->assertSession();
29
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->assertSame('Thumbnail', $header->getText());
45     $header = $assert_session->elementExists('css', 'th#view-name-table-column');
46     $this->assertSame('Media name', $header->getText());
47     $header = $assert_session->elementExists('css', 'th#view-bundle-table-column');
48     $this->assertSame('Type', $header->getText());
49     $header = $assert_session->elementExists('css', 'th#view-uid-table-column');
50     $this->assertSame('Author', $header->getText());
51     $header = $assert_session->elementExists('css', 'th#view-status-table-column');
52     $this->assertSame('Status', $header->getText());
53     $header = $assert_session->elementExists('css', 'th#view-changed-table-column');
54     $this->assertSame('Updated Sort ascending', $header->getText());
55     $header = $assert_session->elementExists('css', 'th#view-operations-table-column');
56     $this->assertSame('Operations', $header->getText());
57     $assert_session->pageTextContains('No media available.');
58
59     // Create some content for the view.
60     $media_type1 = $this->createMediaType('test');
61     $media_type2 = $this->createMediaType('test');
62     $media1 = Media::create([
63       'bundle' => $media_type1->id(),
64       'name' => 'Media 1',
65       'uid' => $this->adminUser->id(),
66     ]);
67     $media1->save();
68     $media2 = Media::create([
69       'bundle' => $media_type2->id(),
70       'name' => 'Media 2',
71       'uid' => $this->adminUser->id(),
72       'status' => FALSE,
73     ]);
74     $media2->save();
75     $media3 = Media::create([
76       'bundle' => $media_type1->id(),
77       'name' => 'Media 3',
78       'uid' => $this->nonAdminUser->id(),
79     ]);
80     $media3->save();
81
82     // Verify the view is now correctly populated.
83     $this->grantPermissions($role, [
84       'view media',
85       'update any media',
86       'delete any media',
87     ]);
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)');
92
93     // Media thumbnails.
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);
97
98     // Media names.
99     $name1 = $assert_session->elementExists('css', 'td.views-field-name a', $row1);
100     $this->assertSame($media1->label(), $name1->getText());
101     $name2 = $assert_session->elementExists('css', 'td.views-field-name a', $row2);
102     $this->assertSame($media2->label(), $name2->getText());
103     $name3 = $assert_session->elementExists('css', 'td.views-field-name a', $row3);
104     $this->assertSame($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());
108
109     // Media types.
110     $type_element1 = $assert_session->elementExists('css', 'td.views-field-bundle', $row1);
111     $this->assertSame($media_type1->label(), $type_element1->getText());
112     $type_element2 = $assert_session->elementExists('css', 'td.views-field-bundle', $row2);
113     $this->assertSame($media_type2->label(), $type_element2->getText());
114     $type_element3 = $assert_session->elementExists('css', 'td.views-field-bundle', $row3);
115     $this->assertSame($media_type1->label(), $type_element3->getText());
116
117     // Media authors.
118     $author_element1 = $assert_session->elementExists('css', 'td.views-field-uid', $row1);
119     $this->assertSame($this->adminUser->getDisplayName(), $author_element1->getText());
120     $author_element2 = $assert_session->elementExists('css', 'td.views-field-uid', $row2);
121     $this->assertSame($this->adminUser->getDisplayName(), $author_element2->getText());
122     $author_element3 = $assert_session->elementExists('css', 'td.views-field-uid', $row3);
123     $this->assertSame($this->nonAdminUser->getDisplayName(), $author_element3->getText());
124
125     // Media publishing status.
126     $status_element1 = $assert_session->elementExists('css', 'td.views-field-status', $row1);
127     $this->assertSame('Published', $status_element1->getText());
128     $status_element2 = $assert_session->elementExists('css', 'td.views-field-status', $row2);
129     $this->assertSame('Unpublished', $status_element2->getText());
130     $status_element3 = $assert_session->elementExists('css', 'td.views-field-status', $row3);
131     $this->assertSame('Published', $status_element3->getText());
132
133     // Timestamp.
134     $expected = \Drupal::service('date.formatter')->format($media1->getChangedTime(), 'short');
135     $changed_element1 = $assert_session->elementExists('css', 'td.views-field-changed', $row1);
136     $this->assertSame($expected, $changed_element1->getText());
137
138     // Operations.
139     $edit_link1 = $assert_session->elementExists('css', 'td.views-field-operations li.edit a', $row1);
140     $this->assertSame('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->assertSame('Delete', $delete_link1->getText());
144     $assert_session->linkByHrefExists('/media/' . $media1->id() . '/delete');
145   }
146
147 }