You are here

protected function ContentModerationTest::setUp in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/media_library/tests/src/FunctionalJavascript/ContentModerationTest.php \Drupal\Tests\media_library\FunctionalJavascript\ContentModerationTest::setUp()

Overrides BrowserTestBase::setUp

File

core/modules/media_library/tests/src/FunctionalJavascript/ContentModerationTest.php, line 74

Class

ContentModerationTest
Tests media library integration with content moderation.

Namespace

Drupal\Tests\media_library\FunctionalJavascript

Code

protected function setUp() : void {
  parent::setUp();

  // Create an image media type and article node type.
  $this
    ->createMediaType('image', [
    'id' => 'image',
  ]);
  $this
    ->drupalCreateContentType([
    'type' => 'article',
    'name' => 'Article',
  ]);

  // Create a media reference field on articles.
  $this
    ->createEntityReferenceField('node', 'article', 'field_media', 'Media', 'media', 'default', [
    'target_bundles' => [
      'image',
    ],
  ], FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED);

  // Add the media field to the form display.
  $form_display = \Drupal::service('entity_display.repository')
    ->getFormDisplay('node', 'article', 'default');
  $form_display
    ->setComponent('field_media', [
    'type' => 'media_library_widget',
  ])
    ->save();

  // Configure the "Editorial" workflow to apply to image media.
  $workflow = $this
    ->createEditorialWorkflow();
  $workflow
    ->getTypePlugin()
    ->addEntityTypeAndBundle('media', 'image');
  $workflow
    ->save();
  $image = File::create([
    'uri' => $this
      ->getTestFiles('image')[0]->uri,
  ]);
  $image
    ->setPermanent();
  $image
    ->save();

  // Create a draft, published and archived media item.
  $draft_media = Media::create([
    'name' => 'Hoglet',
    'bundle' => 'image',
    'field_media_image' => $image,
    'moderation_state' => 'draft',
  ]);
  $draft_media
    ->save();
  $published_media = Media::create([
    'name' => 'Panda',
    'bundle' => 'image',
    'field_media_image' => $image,
    'moderation_state' => 'published',
  ]);
  $published_media
    ->save();
  $archived_media = Media::create([
    'name' => 'Mammoth',
    'bundle' => 'image',
    'field_media_image' => $image,
    'moderation_state' => 'archived',
  ]);
  $archived_media
    ->save();

  // Create some users for our tests. We want to check with user 1, a media
  // administrator with 'administer media' permissions, a user that has the
  // 'view media' permissions, a user that can 'view media' and 'view own
  // unpublished media', and a user that has 'view media' and 'view any
  // unpublished content' permissions.
  $this->userAdmin = $this
    ->drupalCreateUser([
    'access administration pages',
    'access content',
    'access media overview',
    'edit own article content',
    'create article content',
    'administer media',
  ]);
  $this->userViewer = $this
    ->drupalCreateUser([
    'access administration pages',
    'access content',
    'access media overview',
    'edit own article content',
    'create article content',
    'view media',
    'create media',
  ]);
  $this->userViewOwnUnpublished = $this
    ->drupalCreateUser([
    'access administration pages',
    'access content',
    'access media overview',
    'edit own article content',
    'create article content',
    'view media',
    'view own unpublished media',
    'create media',
  ]);
  $this->userViewAnyUnpublished = $this
    ->drupalCreateUser([
    'access administration pages',
    'access content',
    'access media overview',
    'edit own article content',
    'create article content',
    'view media',
    'create media',
    'view any unpublished content',
  ]);
}