function MediaLibraryContextualFilterTest::testMediaLibraryContextualFilter

Test contextual filters in the media library.

File

core/modules/media_library/tests/src/FunctionalJavascript/MediaLibraryContextualFilterTest.php, line 45

Class

MediaLibraryContextualFilterTest
Tests the media library view with contextual filters.

Namespace

Drupal\Tests\media_library\FunctionalJavascript

Code

public function testMediaLibraryContextualFilter() : void {
  // Create users for adding media and using the media library.
  $permissions = [
    'create basic_page content',
  ];
  $user1 = $this->createUser($permissions, 'user 1');
  $user2 = $this->createUser($permissions, 'user 2');
  // Create media items with user 1.
  Media::create([
    'name' => 'Mosquito',
    'bundle' => 'type_one',
    'field_media_test' => 'Mosquito',
    'status' => TRUE,
    'uid' => $user1->id(),
  ])
    ->save();
  Media::create([
    'name' => 'Ant',
    'bundle' => 'type_one',
    'field_media_test' => 'Ant',
    'status' => TRUE,
    'uid' => $user1->id(),
  ])
    ->save();
  // Create media items with user 2.
  Media::create([
    'name' => 'Bear',
    'bundle' => 'type_one',
    'field_media_test' => 'Bear',
    'status' => TRUE,
    'uid' => $user2->id(),
  ])
    ->save();
  Media::create([
    'name' => 'Horse',
    'bundle' => 'type_one',
    'field_media_test' => 'Horse',
    'status' => TRUE,
    'uid' => $user2->id(),
  ])
    ->save();
  $this->drupalLogin($user2);
  // Visit a node create page with user 2.
  $this->drupalGet('node/add/basic_page');
  $this->openMediaLibraryForField('field_unlimited_media');
  $this->assertElementExistsAfterWait('css', '.js-media-library-item');
  // Verify number of items on initial load of the media library widget.
  $this->waitForElementsCount('css', '#media-library-view .js-media-library-item', 2);
  // Switch to the table widget.
  $this->switchToMediaLibraryTable();
  // Verify number of items again.
  $this->waitForElementsCount('css', '#media-library-view .js-media-library-item', 2);
  // Switch back to the grid display.
  $this->switchToMediaLibraryGrid();
  // Verify number of items again.
  $this->waitForElementsCount('css', '#media-library-view .js-media-library-item', 2);
  // Submit exposed views filters.
  $this->getSession()
    ->getPage()
    ->find('css', '#media-library-view')
    ->pressButton('Apply filters');
  $this->assertSession()
    ->assertWaitOnAjaxRequest();
  $this->waitForElementsCount('css', '#media-library-view .js-media-library-item', 2);
  // Select and submit items.
  $this->selectMediaItem(0);
  $this->selectMediaItem(1);
  $this->pressInsertSelected();
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.