acquia_dam-1.0.0-rc1/tests/src/FunctionalJavascript/EntityReferenceRevisionsIntegrationTest.php
tests/src/FunctionalJavascript/EntityReferenceRevisionsIntegrationTest.php
<?php use Drupal\acquia_dam\Entity\MediaSourceField; use Drupal\field\Entity\FieldConfig; use Drupal\field\Entity\FieldStorageConfig; use Drupal\media\Entity\Media; use Drupal\node\Entity\Node; use Drupal\Tests\acquia_dam\FunctionalJavascript\AcquiaDamWebDriverTestBase; /** * Tests integration with Acquia Site Studio. * * @group acquia_dam * @requires module entity_reference_revisions */ final class EntityReferenceRevisionsIntegrationTest extends AcquiaDamWebDriverTestBase { /** * {@inheritdoc} */ protected static $modules = [ 'entity_reference_revisions', ]; /** * {@inheritdoc} */ protected function setUp(): void { parent::setUp(); // PHPUnit has `checkRequirements` as a private method since 9.x. // We run Drupal's `checkRequirements` again, here, to verify our module // requirement. // @todo remove after https://www.drupal.org/i/3261817 $this->checkRequirements(); // Look for or add the specified field to the requested entity bundle. if (!FieldStorageConfig::loadByName('node', 'media_revision_field')) { FieldStorageConfig::create([ 'field_name' => 'media_revision_field', 'type' => 'entity_reference_revisions', 'entity_type' => 'node', 'cardinality' => -1, 'settings' => [ 'target_type' => 'media', ], ])->save(); } if (!FieldConfig::loadByName('node', 'page', 'media_revision_field')) { FieldConfig::create([ 'field_name' => 'media_revision_field', 'entity_type' => 'node', 'bundle' => 'page', 'label' => 'A Media Field', 'settings' => [ 'handler' => 'default:media', 'handler_settings' => ['target_bundles' => NULL], ], ])->save(); } $display_repository = $this->container->get('entity_display.repository'); $display_repository->getFormDisplay('node', 'page', 'default') ->setComponent('media_revision_field', [ 'type' => 'entity_reference_revisions_asset_media_library', 'region' => 'content', 'settings' => [ 'media_types' => [], ], ]) ->save(); $display_repository->getViewDisplay('node', 'page', 'default') ->setComponent('media_revision_field', [ 'type' => 'entity_reference_revisions_entity_view', ]) ->save(); } /** * Test to check the versioning in a ERR widget. */ public function testMediaLibraryErrWidget() { $this->createAndLoginContentCreator(); $this->grantSiteRegistrationToken(); $this->grantCurrentUserDamToken(); // Only images have version support, but the only fixture with multiple // versions is the video. $media = Media::create([ 'bundle' => 'acquia_dam_video_asset', MediaSourceField::SOURCE_FIELD_NAME => [ 'asset_id' => 'efb03f75-3c42-497b-baa9-5ec79d1f56af', 'version_id' => '6d8ff607-723a-474f-992a-38833a57f97b', ], ]); $media->save(); $first_revision = $media->getRevisionId(); $node = $this->drupalCreateNode([ 'type' => 'page', 'title' => 'test', 'media_revision_field' => [ [ 'target_id' => $media->id(), 'target_revision_id' => $first_revision, ], ], ]); $this->drupalGet('node/' . $node->id() . '/edit'); $this->assertSession()->waitForText('A media Field'); $this->assertSession()->pageTextContains('SD-Social Promo.mp4'); $media->setNewRevision(); $media->set(MediaSourceField::SOURCE_FIELD_NAME, [ 'asset_id' => 'efb03f75-3c42-497b-baa9-5ec79d1f56af', 'version_id' => '04984534-8682-4fbf-95ae-f3c7b46af9ee', ]); $media->save(); $second_revision = $media->getRevisionId(); self::assertNotEquals($first_revision, $second_revision); $this->drupalGet('node/' . $node->id() . '/edit'); $this->assertSession()->waitForText('A media Field'); $wrapper = $this->assertSession()->elementExists('css', '#media_revision_field-media-library-wrapper'); $wrapper->hasButton('Update Media'); $wrapper->pressButton('Update Media'); $this->assertSession()->assertWaitOnAjaxRequest(); $this->assertSession()->waitForElement('css', '#drupal-modal'); $this->assertSession()->pageTextContains('You are about to update your current media to a newer version.'); $this->assertSession()->pageTextContains('Current media'); $this->assertSession()->pageTextContains('Updated media'); $this->pressDialogButton('Update'); $this->assertSession()->pageTextNotContains('Update Media'); $this->getSession()->getPage()->pressButton('Save'); $this->assertSession()->waitForText('page test has been updated.'); $updated_node = Node::load($node->id()); self::assertEquals($updated_node->get('media_revision_field')->getValue()[0]['target_revision_id'], $second_revision); } /** * Helper function to log in a user with necessary permission and access. * * @throws \Drupal\Core\Entity\EntityStorageException. */ protected function createAndLoginContentCreator() { $user = $this->drupalCreateUser([ 'use text format test_format', 'access media overview', 'create page content', 'edit any page content', 'view all media revisions', ]); $this->drupalLogin($user); } }