MediaLibraryContext.behat.inc in Lightning Media 8.2
File
tests/contexts/MediaLibraryContext.behat.inc
View source
<?php
namespace Acquia\LightningExtension\Context;
use Drupal\DrupalExtension\Context\DrupalSubContextBase;
use Drupal\DrupalExtension\Context\MinkContext;
final class MediaLibraryContext extends DrupalSubContextBase {
private $media = [];
public function tearDown() {
$storage = \Drupal::entityTypeManager()
->getStorage('media');
$items = array_keys($this->media);
$items = $storage
->loadMultiple($items);
$storage
->delete($items);
}
public function createItems() {
$storage = \Drupal::entityTypeManager()
->getStorage('media');
$media = $storage
->create([
'bundle' => 'tweet',
]);
$media
->setName("I'm a tweet")
->set('embed_code', 'https://twitter.com/50NerdsofGrey/status/757319527151636480')
->set('field_media_in_library', TRUE)
->setPublished();
$storage
->save($media);
$id = $media
->id();
$this->media[$id] = $media
->label();
$media = $storage
->create([
'bundle' => 'instagram',
]);
$media
->setName("I'm an instagram")
->set('embed_code', 'https://www.instagram.com/p/BaecNGYAYyP/')
->set('field_media_in_library', TRUE)
->setPublished();
$storage
->save($media);
$id = $media
->id();
$this->media[$id] = $media
->label();
}
public function visitLibrary() {
$context = $this
->getContext(MinkContext::class);
$context
->assertAtPath('/admin/content/media');
}
public function assertStatusFilter() {
$this
->assertSession()
->fieldExists('Published status');
}
public function assertTypeFilter() {
$assert = $this
->assertSession();
$filter = $assert
->fieldExists('Type');
$original_value = $filter
->getValue();
$filter
->selectOption('Tweet');
$context = $this
->getContext(ViewsContext::class);
$context
->applyExposedFilters();
$assert
->pageTextContains("I'm a tweet");
$assert
->pageTextNotContains("I'm an instagram");
$filter
->selectOption($original_value);
$context
->applyExposedFilters();
}
public function assertNameFilter() {
$this
->assertSession()
->fieldExists('Media name');
}
public function assertLanguageFilter() {
$this
->assertSession()
->fieldExists('Language');
}
public function assertDelete() {
$assert = $this
->assertSession();
$assert
->fieldExists('Action')
->selectOption('Delete media');
$assert
->fieldExists('media_bulk_form[0]')
->check();
$assert
->fieldExists('media_bulk_form[1]')
->check();
$assert
->elementExists('named', [
'button',
'Apply to selected items',
])
->press();
$assert
->elementExists('named', [
'button',
'Delete',
])
->press();
$assert
->pageTextContains('Deleted 2 items.');
array_walk($this->media, [
$assert,
'pageTextNotContains',
]);
}
public function assertMediaInLibrary($title) {
$this
->visitLibrary();
$this
->assertSession()
->elementExists('named', [
'link',
$title,
]);
}
}