Chris@0: drupalPlaceBlock('local_actions_block'); Chris@0: $this->drupalPlaceBlock('local_tasks_block'); Chris@0: Chris@0: // We need to test without any default configuration in place. Chris@0: // @TODO: Remove this when https://www.drupal.org/node/2883813 lands. Chris@0: MediaType::load('file')->delete(); Chris@0: MediaType::load('image')->delete(); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tests the media actions (add/edit/delete). Chris@0: */ Chris@0: public function testMediaWithOnlyOneMediaType() { Chris@0: $session = $this->getSession(); Chris@0: $page = $session->getPage(); Chris@0: $assert_session = $this->assertSession(); Chris@0: Chris@0: $media_type = $this->createMediaType([ Chris@0: 'new_revision' => FALSE, Chris@0: 'queue_thumbnail_downloads' => FALSE, Chris@0: ]); Chris@0: Chris@0: $this->drupalGet('media/add'); Chris@0: $assert_session->statusCodeEquals(200); Chris@0: $assert_session->addressEquals('media/add/' . $media_type->id()); Chris@0: $assert_session->elementNotExists('css', '#edit-revision'); Chris@0: Chris@0: // Tests media add form. Chris@0: $media_name = $this->randomMachineName(); Chris@0: $page->fillField('name[0][value]', $media_name); Chris@0: $revision_log_message = $this->randomString(); Chris@0: $page->fillField('revision_log_message[0][value]', $revision_log_message); Chris@0: $page->pressButton('Save'); Chris@0: $media_id = $this->container->get('entity.query')->get('media')->execute(); Chris@0: $media_id = reset($media_id); Chris@0: /** @var \Drupal\media\MediaInterface $media */ Chris@0: $media = $this->container->get('entity_type.manager') Chris@0: ->getStorage('media') Chris@0: ->loadUnchanged($media_id); Chris@0: $this->assertEquals($media->getRevisionLogMessage(), $revision_log_message); Chris@0: $this->assertEquals($media->getName(), $media_name); Chris@0: $assert_session->titleEquals($media_name . ' | Drupal'); Chris@0: Chris@0: // Tests media edit form. Chris@0: $media_type->setNewRevision(FALSE); Chris@0: $media_type->save(); Chris@0: $media_name2 = $this->randomMachineName(); Chris@0: $this->drupalGet('media/' . $media_id . '/edit'); Chris@0: $assert_session->checkboxNotChecked('edit-revision'); Chris@0: $media_name = $this->randomMachineName(); Chris@0: $page->fillField('name[0][value]', $media_name2); Chris@0: $page->pressButton('Save'); Chris@0: /** @var \Drupal\media\MediaInterface $media */ Chris@0: $media = $this->container->get('entity_type.manager') Chris@0: ->getStorage('media') Chris@0: ->loadUnchanged($media_id); Chris@0: $this->assertEquals($media->getName(), $media_name2); Chris@0: $assert_session->titleEquals($media_name2 . ' | Drupal'); Chris@0: Chris@0: // Test that there is no empty vertical tabs element, if the container is Chris@0: // empty (see #2750697). Chris@0: // Make the "Publisher ID" and "Created" fields hidden. Chris@0: $this->drupalGet('/admin/structure/media/manage/' . $media_type->id() . '/form-display'); Chris@0: $page->selectFieldOption('fields[created][parent]', 'hidden'); Chris@0: $page->selectFieldOption('fields[uid][parent]', 'hidden'); Chris@0: $page->pressButton('Save'); Chris@0: // Assure we are testing with a user without permission to manage revisions. Chris@0: $this->drupalLogin($this->nonAdminUser); Chris@0: // Check the container is not present. Chris@0: $this->drupalGet('media/' . $media_id . '/edit'); Chris@0: $assert_session->elementNotExists('css', 'input.vertical-tabs__active-tab'); Chris@0: // Continue testing as admin. Chris@0: $this->drupalLogin($this->adminUser); Chris@0: Chris@0: // Enable revisions by default. Chris@0: $previous_revision_id = $media->getRevisionId(); Chris@0: $media_type->setNewRevision(TRUE); Chris@0: $media_type->save(); Chris@0: $this->drupalGet('media/' . $media_id . '/edit'); Chris@0: $assert_session->checkboxChecked('edit-revision'); Chris@0: $page->fillField('name[0][value]', $media_name); Chris@0: $page->fillField('revision_log_message[0][value]', $revision_log_message); Chris@0: $page->pressButton('Save'); Chris@0: $assert_session->titleEquals($media_name . ' | Drupal'); Chris@0: /** @var \Drupal\media\MediaInterface $media */ Chris@0: $media = $this->container->get('entity_type.manager') Chris@0: ->getStorage('media') Chris@0: ->loadUnchanged($media_id); Chris@0: $this->assertEquals($media->getRevisionLogMessage(), $revision_log_message); Chris@0: $this->assertNotEquals($previous_revision_id, $media->getRevisionId()); Chris@0: Chris@0: // Test the status checkbox. Chris@0: $this->drupalGet('media/' . $media_id . '/edit'); Chris@0: $page->uncheckField('status[value]'); Chris@0: $page->pressButton('Save'); Chris@0: /** @var \Drupal\media\MediaInterface $media */ Chris@0: $media = $this->container->get('entity_type.manager') Chris@0: ->getStorage('media') Chris@0: ->loadUnchanged($media_id); Chris@0: $this->assertFalse($media->isPublished()); Chris@0: Chris@0: // Tests media delete form. Chris@0: $this->drupalGet('media/' . $media_id . '/edit'); Chris@0: $page->clickLink('Delete'); Chris@0: $assert_session->pageTextContains('This action cannot be undone'); Chris@0: $page->pressButton('Delete'); Chris@0: $media_id = \Drupal::entityQuery('media')->execute(); Chris@0: $this->assertFalse($media_id); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tests the "media/add" and "media/mid" pages. Chris@0: * Chris@0: * Tests if the "media/add" page gives you a selecting option if there are Chris@0: * multiple media types available. Chris@0: */ Chris@0: public function testMediaWithMultipleMediaTypes() { Chris@0: $assert_session = $this->assertSession(); Chris@0: Chris@0: // Tests and creates the first media type. Chris@0: $first_media_type = $this->createMediaType(['description' => $this->randomMachineName(32)]); Chris@0: Chris@0: // Test and create a second media type. Chris@0: $second_media_type = $this->createMediaType(['description' => $this->randomMachineName(32)]); Chris@0: Chris@0: // Test if media/add displays two media type options. Chris@0: $this->drupalGet('media/add'); Chris@0: Chris@0: // Checks for the first media type. Chris@0: $assert_session->pageTextContains($first_media_type->label()); Chris@0: $assert_session->pageTextContains($first_media_type->getDescription()); Chris@0: // Checks for the second media type. Chris@0: $assert_session->pageTextContains($second_media_type->label()); Chris@0: $assert_session->pageTextContains($second_media_type->getDescription()); Chris@0: Chris@0: // Continue testing media type filter. Chris@0: $first_media_item = Media::create(['bundle' => $first_media_type->id()]); Chris@0: $first_media_item->save(); Chris@0: $second_media_item = Media::create(['bundle' => $second_media_type->id()]); Chris@0: $second_media_item->save(); Chris@0: Chris@0: // Go to first media item. Chris@0: $this->drupalGet('media/' . $first_media_item->id()); Chris@0: $assert_session->statusCodeEquals(200); Chris@0: $assert_session->pageTextContains($first_media_item->getName()); Chris@0: Chris@0: // Go to second media item. Chris@0: $this->drupalGet('media/' . $second_media_item->id()); Chris@0: $assert_session->statusCodeEquals(200); Chris@0: $assert_session->pageTextContains($second_media_item->getName()); Chris@0: } Chris@0: Chris@0: }