X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=web%2Fmodules%2Fcontrib%2Fmedia_entity%2Ftests%2Fsrc%2FFunctional%2FMediaUiFunctionalTest.php;fp=web%2Fmodules%2Fcontrib%2Fmedia_entity%2Ftests%2Fsrc%2FFunctional%2FMediaUiFunctionalTest.php;h=e5168f7e10f9892314c9955426b56e5406ffb4d3;hb=af6d1fb995500ae68849458ee10d66abbdcfb252;hp=0000000000000000000000000000000000000000;hpb=680c79a86e3ed402f263faeac92e89fb6d9edcc0;p=yaffs-website diff --git a/web/modules/contrib/media_entity/tests/src/Functional/MediaUiFunctionalTest.php b/web/modules/contrib/media_entity/tests/src/Functional/MediaUiFunctionalTest.php new file mode 100644 index 000000000..e5168f7e1 --- /dev/null +++ b/web/modules/contrib/media_entity/tests/src/Functional/MediaUiFunctionalTest.php @@ -0,0 +1,216 @@ +drupalPlaceBlock('local_actions_block'); + $this->drupalPlaceBlock('local_tasks_block'); + } + + /** + * Tests the media actions (add/edit/delete). + */ + public function testMediaWithOnlyOneBundle() { + $session = $this->getSession(); + $page = $session->getPage(); + $assert_session = $this->assertSession(); + + /** @var \Drupal\media_entity\MediaBundleInterface $bundle */ + $bundle = $this->drupalCreateMediaBundle(); + + // Assert that media item list is empty. + $this->drupalGet('admin/content/media'); + $assert_session->statusCodeEquals(200); + $assert_session->pageTextContains('No content available.'); + + $this->drupalGet('media/add'); + $assert_session->statusCodeEquals(200); + $assert_session->addressEquals('media/add/' . $bundle->id()); + $assert_session->checkboxChecked('edit-revision'); + + // Tests media item add form. + $media_name = $this->randomMachineName(); + $page->fillField('name[0][value]', $media_name); + $revision_log_message = $this->randomString(); + $page->fillField('revision_log', $revision_log_message); + $page->pressButton('Save and publish'); + $media_id = $this->container->get('entity.query')->get('media')->execute(); + $media_id = reset($media_id); + /** @var \Drupal\media_entity\MediaInterface $media */ + $media = $this->container->get('entity_type.manager') + ->getStorage('media') + ->loadUnchanged($media_id); + $this->assertEquals($media->getRevisionLogMessage(), $revision_log_message); + $assert_session->titleEquals($media->label() . ' | Drupal'); + + // Test if the media list contains exactly 1 media bundle. + $this->drupalGet('admin/content/media'); + $assert_session->statusCodeEquals(200); + $assert_session->pageTextContains($media->label()); + + // Tests media edit form. + $media_name2 = $this->randomMachineName(); + $this->drupalGet('media/' . $media_id . '/edit'); + $assert_session->checkboxNotChecked('edit-revision'); + $media_name = $this->randomMachineName(); + $page->fillField('name[0][value]', $media_name2); + $page->pressButton('Save and keep published'); + $assert_session->titleEquals($media_name2 . ' | Drupal'); + + // Assert that the media list updates after an edit. + $this->drupalGet('admin/content/media'); + $assert_session->statusCodeEquals(200); + $assert_session->pageTextContains($media_name2); + + // Test that there is no empty vertical tabs element, if the container is + // empty (see #2750697). + // Make the "Publisher ID" and "Created" fields hidden. + $this->drupalGet('/admin/structure/media/manage/' . $bundle->id . '/form-display'); + $page->selectFieldOption('fields[created][parent]', 'hidden'); + $page->selectFieldOption('fields[uid][parent]', 'hidden'); + $page->pressButton('Save'); + // Assure we are testing with a user without permission to manage revisions. + $this->drupalLogin($this->nonAdminUser); + // Check the container is not present. + $this->drupalGet('media/' . $media_id . '/edit'); + // An empty tab container would look like this. + $raw_html = '
' . "\n" . '
'; + $assert_session->responseNotContains($raw_html); + // Continue testing as admin. + $this->drupalLogin($this->adminUser); + + // Enable revisions by default. + $bundle->setNewRevision(TRUE); + $bundle->save(); + $this->drupalGet('media/' . $media_id . '/edit'); + $assert_session->checkboxChecked('edit-revision'); + $page->fillField('name[0][value]', $media_name); + $page->fillField('revision_log', $revision_log_message); + $page->pressButton('Save and keep published'); + $assert_session->titleEquals($media_name . ' | Drupal'); + /** @var \Drupal\media_entity\MediaInterface $media */ + $media = $this->container->get('entity_type.manager') + ->getStorage('media') + ->loadUnchanged($media_id); + $this->assertEquals($media->getRevisionLogMessage(), $revision_log_message); + + // Tests media delete form. + $this->drupalGet('media/' . $media_id . '/edit'); + $page->clickLink('Delete'); + $assert_session->pageTextContains('This action cannot be undone'); + $page->pressButton('Delete'); + $media_id = \Drupal::entityQuery('media')->execute(); + $this->assertFalse($media_id); + + // Assert that the media list is empty after deleting the media item. + $this->drupalGet('admin/content/media'); + $assert_session->statusCodeEquals(200); + $assert_session->pageTextNotContains($media_name); + $assert_session->pageTextContains('No content available.'); + + } + + /** + * Tests the "media/add" and "admin/content/media" pages. + * + * Tests if the "media/add" page gives you a selecting option if there are + * multiple media bundles available. + */ + public function testMediaWithMultipleBundles() { + $session = $this->getSession(); + $page = $session->getPage(); + $assert_session = $this->assertSession(); + + // Test access to media overview page. + $this->drupalLogout(); + $this->drupalGet('admin/content/media'); + $assert_session->statusCodeEquals(403); + + $this->drupalLogin($this->adminUser); + $this->drupalGet('admin/content'); + + // Test there is a media tab in the menu. + $page->clickLink('Media'); + $assert_session->statusCodeEquals(200); + $assert_session->pageTextContains('No content available.'); + + // Tests and creates the first media bundle. + $first_media_bundle = $this->drupalCreateMediaBundle(['description' => $this->randomMachineName(32)]); + + // Test and create a second media bundle. + $second_media_bundle = $this->drupalCreateMediaBundle(['description' => $this->randomMachineName(32)]); + + // Test if media/add displays two media bundle options. + $this->drupalGet('media/add'); + + // Checks for the first media bundle. + $assert_session->pageTextContains($first_media_bundle->label()); + $assert_session->pageTextContains($first_media_bundle->description); + // Checks for the second media bundle. + $assert_session->pageTextContains($second_media_bundle->label()); + $assert_session->pageTextContains($second_media_bundle->description); + + // Continue testing media bundle filter. + $first_media_item = Media::create(['bundle' => $first_media_bundle->id()]); + $first_media_item->save(); + $second_media_item = Media::create(['bundle' => $second_media_bundle->id()]); + $second_media_item->save(); + + // Go to media item list. + $this->drupalGet('admin/content/media'); + $assert_session->statusCodeEquals(200); + $assert_session->linkExists('Add media'); + + // Assert that all available media items are in the list. + $assert_session->pageTextContains($first_media_item->label()); + $assert_session->pageTextContains($first_media_bundle->label()); + $assert_session->pageTextContains($second_media_item->label()); + $assert_session->pageTextContains($second_media_bundle->label()); + + // Filter for each bundle and assert that the list has been updated. + $this->drupalGet('admin/content/media', ['query' => ['provider' => $first_media_bundle->id()]]); + $assert_session->statusCodeEquals(200); + $assert_session->pageTextContains($first_media_item->label()); + $assert_session->pageTextNotContains($second_media_item->label()); + + // Filter all and check for all items again. + $this->drupalGet('admin/content/media', ['query' => ['provider' => 'All']]); + $assert_session->statusCodeEquals(200); + $assert_session->pageTextContains($first_media_item->label()); + $assert_session->pageTextContains($first_media_bundle->label()); + $assert_session->pageTextContains($second_media_item->label()); + $assert_session->pageTextContains($second_media_bundle->label()); + + } + +}