Chris@14: drupalLogin($this->nonAdminUser); Chris@14: } Chris@14: Chris@14: /** Chris@14: * Test that the Media overview page (/admin/content/media). Chris@14: */ Chris@14: public function testMediaOverviewPage() { Chris@14: $assert_session = $this->assertSession(); Chris@14: Chris@14: // Check the view exists, is access-restricted, and some defaults are there. Chris@14: $this->drupalGet('/admin/content/media'); Chris@14: $assert_session->statusCodeEquals(403); Chris@14: $role = Role::load(RoleInterface::AUTHENTICATED_ID); Chris@14: $this->grantPermissions($role, ['access media overview']); Chris@14: $this->drupalGet('/admin/content/media'); Chris@14: $assert_session->statusCodeEquals(200); Chris@14: $assert_session->titleEquals('Media | Drupal'); Chris@14: $assert_session->fieldExists('Media name'); Chris@14: $assert_session->selectExists('type'); Chris@14: $assert_session->selectExists('status'); Chris@14: $assert_session->selectExists('langcode'); Chris@14: $assert_session->buttonExists('Filter'); Chris@14: $header = $assert_session->elementExists('css', 'th#view-thumbnail-target-id-table-column'); Chris@17: $this->assertSame('Thumbnail', $header->getText()); Chris@14: $header = $assert_session->elementExists('css', 'th#view-name-table-column'); Chris@17: $this->assertSame('Media name', $header->getText()); Chris@14: $header = $assert_session->elementExists('css', 'th#view-bundle-table-column'); Chris@17: $this->assertSame('Type', $header->getText()); Chris@14: $header = $assert_session->elementExists('css', 'th#view-uid-table-column'); Chris@17: $this->assertSame('Author', $header->getText()); Chris@14: $header = $assert_session->elementExists('css', 'th#view-status-table-column'); Chris@17: $this->assertSame('Status', $header->getText()); Chris@14: $header = $assert_session->elementExists('css', 'th#view-changed-table-column'); Chris@17: $this->assertSame('Updated Sort ascending', $header->getText()); Chris@14: $header = $assert_session->elementExists('css', 'th#view-operations-table-column'); Chris@17: $this->assertSame('Operations', $header->getText()); Chris@17: $assert_session->pageTextContains('No media available.'); Chris@14: Chris@14: // Create some content for the view. Chris@17: $media_type1 = $this->createMediaType('test'); Chris@17: $media_type2 = $this->createMediaType('test'); Chris@14: $media1 = Media::create([ Chris@14: 'bundle' => $media_type1->id(), Chris@14: 'name' => 'Media 1', Chris@14: 'uid' => $this->adminUser->id(), Chris@14: ]); Chris@14: $media1->save(); Chris@14: $media2 = Media::create([ Chris@14: 'bundle' => $media_type2->id(), Chris@14: 'name' => 'Media 2', Chris@14: 'uid' => $this->adminUser->id(), Chris@14: 'status' => FALSE, Chris@14: ]); Chris@14: $media2->save(); Chris@14: $media3 = Media::create([ Chris@14: 'bundle' => $media_type1->id(), Chris@14: 'name' => 'Media 3', Chris@14: 'uid' => $this->nonAdminUser->id(), Chris@14: ]); Chris@14: $media3->save(); Chris@14: Chris@14: // Verify the view is now correctly populated. Chris@14: $this->grantPermissions($role, [ Chris@14: 'view media', Chris@14: 'update any media', Chris@14: 'delete any media', Chris@14: ]); Chris@14: $this->drupalGet('/admin/content/media'); Chris@14: $row1 = $assert_session->elementExists('css', 'table tbody tr:nth-child(1)'); Chris@14: $row2 = $assert_session->elementExists('css', 'table tbody tr:nth-child(2)'); Chris@14: $row3 = $assert_session->elementExists('css', 'table tbody tr:nth-child(3)'); Chris@14: Chris@14: // Media thumbnails. Chris@14: $assert_session->elementExists('css', 'td.views-field-thumbnail__target-id img', $row1); Chris@14: $assert_session->elementExists('css', 'td.views-field-thumbnail__target-id img', $row2); Chris@14: $assert_session->elementExists('css', 'td.views-field-thumbnail__target-id img', $row3); Chris@14: Chris@14: // Media names. Chris@14: $name1 = $assert_session->elementExists('css', 'td.views-field-name a', $row1); Chris@17: $this->assertSame($media1->label(), $name1->getText()); Chris@14: $name2 = $assert_session->elementExists('css', 'td.views-field-name a', $row2); Chris@17: $this->assertSame($media2->label(), $name2->getText()); Chris@14: $name3 = $assert_session->elementExists('css', 'td.views-field-name a', $row3); Chris@17: $this->assertSame($media3->label(), $name3->getText()); Chris@14: $assert_session->linkByHrefExists('/media/' . $media1->id()); Chris@14: $assert_session->linkByHrefExists('/media/' . $media2->id()); Chris@14: $assert_session->linkByHrefExists('/media/' . $media3->id()); Chris@14: Chris@14: // Media types. Chris@14: $type_element1 = $assert_session->elementExists('css', 'td.views-field-bundle', $row1); Chris@17: $this->assertSame($media_type1->label(), $type_element1->getText()); Chris@14: $type_element2 = $assert_session->elementExists('css', 'td.views-field-bundle', $row2); Chris@17: $this->assertSame($media_type2->label(), $type_element2->getText()); Chris@14: $type_element3 = $assert_session->elementExists('css', 'td.views-field-bundle', $row3); Chris@17: $this->assertSame($media_type1->label(), $type_element3->getText()); Chris@14: Chris@14: // Media authors. Chris@14: $author_element1 = $assert_session->elementExists('css', 'td.views-field-uid', $row1); Chris@17: $this->assertSame($this->adminUser->getDisplayName(), $author_element1->getText()); Chris@14: $author_element2 = $assert_session->elementExists('css', 'td.views-field-uid', $row2); Chris@17: $this->assertSame($this->adminUser->getDisplayName(), $author_element2->getText()); Chris@14: $author_element3 = $assert_session->elementExists('css', 'td.views-field-uid', $row3); Chris@17: $this->assertSame($this->nonAdminUser->getDisplayName(), $author_element3->getText()); Chris@14: Chris@14: // Media publishing status. Chris@14: $status_element1 = $assert_session->elementExists('css', 'td.views-field-status', $row1); Chris@17: $this->assertSame('Published', $status_element1->getText()); Chris@14: $status_element2 = $assert_session->elementExists('css', 'td.views-field-status', $row2); Chris@17: $this->assertSame('Unpublished', $status_element2->getText()); Chris@14: $status_element3 = $assert_session->elementExists('css', 'td.views-field-status', $row3); Chris@17: $this->assertSame('Published', $status_element3->getText()); Chris@14: Chris@14: // Timestamp. Chris@14: $expected = \Drupal::service('date.formatter')->format($media1->getChangedTime(), 'short'); Chris@14: $changed_element1 = $assert_session->elementExists('css', 'td.views-field-changed', $row1); Chris@17: $this->assertSame($expected, $changed_element1->getText()); Chris@14: Chris@14: // Operations. Chris@14: $edit_link1 = $assert_session->elementExists('css', 'td.views-field-operations li.edit a', $row1); Chris@17: $this->assertSame('Edit', $edit_link1->getText()); Chris@14: $assert_session->linkByHrefExists('/media/' . $media1->id() . '/edit'); Chris@14: $delete_link1 = $assert_session->elementExists('css', 'td.views-field-operations li.delete a', $row1); Chris@17: $this->assertSame('Delete', $delete_link1->getText()); Chris@14: $assert_session->linkByHrefExists('/media/' . $media1->id() . '/delete'); Chris@14: } Chris@14: Chris@14: }