+++ /dev/null
-<?php
-
-namespace Drupal\media\Tests;
-
-use Drupal\simpletest\WebTestBase;
-
-/**
- * Ensures that media bundle for gallery can be created.
- *
- * @group media
- */
-class GalleryBundleTest extends WebTestBase {
- /**
- * Exempt from strict schema checking.
- *
- * @see \Drupal\Core\Config\Testing\ConfigSchemaChecker
- *
- * @var bool
- */
- protected $strictConfigSchema = FALSE;
-
- /**
- * Modules to enable.
- *
- * @var array
- */
- public static $modules = [
- 'media',
- 'media_entity',
- 'media_entity_slideshow',
- 'node',
- 'editor',
- ];
-
- /**
- * The test media bundle.
- *
- * @var \Drupal\media_entity\MediaBundleInterface
- */
- protected $testBundle;
-
- /**
- * {@inheritdoc}
- */
- protected function setUp() {
- parent::setUp();
- $this->testBundle = $this->container->get('entity_type.manager')->getStorage('media_bundle')->load('gallery');
-
- $adminUser = $this->drupalCreateUser([
- 'view media',
- 'create media',
- 'update media',
- 'update any media',
- 'delete media',
- 'delete any media',
- 'access media overview',
- 'access gallery_media_library entity browser pages',
- ]);
- $this->drupalLogin($adminUser);
- }
-
- /**
- * Tests gallery media bundle creation from config files.
- */
- public function testMediaBundleCreationFromModule() {
- $type_configuration = [
- 'source_field' => 'field_slide',
- ];
-
- $this->assertTrue((bool) $this->testBundle, 'The media bundle from default configuration has been created in the database.');
- $this->assertEqual($this->testBundle->get('label'), 'Gallery', 'Correct label detected.');
- $this->assertEqual($this->testBundle->get('description'), 'Use Gallery for creating a collection of different media items.', 'Correct description detected.');
- $this->assertEqual($this->testBundle->get('type'), 'slideshow', 'Correct plugin ID detected.');
- $this->assertEqual($this->testBundle->get('type_configuration'), $type_configuration, 'Type configuration correct.');
- $this->assertEqual($this->testBundle->get('field_map'), [], 'Correct field map detected.');
- }
-
- /**
- * Tests thumbnail of the gallery item.
- */
- public function testGalleryItemThumbnail() {
- // Let's add one image and one video.
- $imageItem = $this->addImageItem();
- $videoItem = $this->addVideoItem();
- $this->drupalGet('media/add/gallery');
- $pathValue = (string) current($this->xpath('//input[@data-drupal-selector="edit-field-slide-entity-browser-entity-browser-path"]/@value'));
- $edit = [
- 'name[0][value]' => 'Gallery item',
- 'field_slide[target_id]' => 'media:' . $imageItem['id'] . ' media:' . $videoItem['id'],
- 'field_slide[entity_browser][entity_browser][path]' => $pathValue,
- ];
- $this->drupalPostForm(NULL, $edit, t('Save and publish'));
-
- // Let's load all the media items.
- $gallery_id = $this->container->get('entity.query')->get('media')->condition('bundle', 'gallery')->sort('created', 'DESC')->execute();
- $gallery = $this->loadMediaItem(reset($gallery_id));
- $image = $this->loadMediaItem($imageItem['id']);
- $video = $this->loadMediaItem($videoItem['id']);
- // Let's check thumbnail now.
- $gallery_thumbnail = $gallery->getType()->thumbnail($gallery);
- $image_thumbnail = $image->getType()->thumbnail($image);
- $video_thumbnail = $video->getType()->thumbnail($video);
- $this->assertEqual($gallery_thumbnail, $image_thumbnail, "Correct thumbnail detected.");
-
- $this->drupalGet('media/add/gallery');
- $edit = [
- 'name[0][value]' => 'Gallery item 2',
- 'field_slide[target_id]' => 'media:' . $videoItem['id'] . ' media:' . $imageItem['id'],
- 'field_slide[entity_browser][entity_browser][path]' => $pathValue,
- ];
- $this->drupalPostForm(NULL, $edit, t('Save and publish'));
-
- // Let's check the thumbnail again.
- $gallery_id = $this->container->get('entity.query')->get('media')->condition('bundle', 'gallery')->sort('created', 'DESC')->execute();
- $gallery = $this->loadMediaItem(reset($gallery_id));
- $gallery_thumbnail = $gallery->getType()->thumbnail($gallery);
- $this->assertEqual($gallery_thumbnail, $video_thumbnail, "Correct thumbnail detected.");
- }
-
- /**
- * Tests that gallery option isn't available in gallery create bundle filters.
- */
- public function testGalleryOption() {
- // Open the media library iframe used on add gallery page.
- $this->drupalGet('entity-browser/modal/gallery_media_library');
- $this->assertNoOption('edit-bundle-1', 'gallery');
- }
-
- /**
- * Adds image type item.
- */
- public function addImageItem() {
- // Let's add image first.
- $name = $this->randomMachineName();
- $testImage = current($this->drupalGetTestFiles('image'));
- $file_path = $this->container->get('file_system')->realpath($testImage->uri);
- $edit = [
- 'name[0][value]' => $name,
- 'files[field_image_0]' => $file_path,
- ];
- // Save the image.
- $this->drupalPostForm('media/add/image', $edit, t('Save and publish'));
- $this->drupalPostForm(NULL, ['field_image[0][alt]' => $name], t('Save and publish'));
- // Obtain the image id.
- $media_id = $this->container->get('entity.query')->get('media')->condition('bundle', 'image')->sort('created', 'DESC')->execute();
- $media_id = reset($media_id);
- $edit['id'] = $media_id;
-
- return $edit;
- }
-
- /**
- * Adds video type item.
- */
- public function addVideoItem() {
- $edit = [
- 'name[0][value]' => 'Drupal video!',
- 'field_video[0][value]' => 'https://www.youtube.com/watch?v=XgYu7-DQjDQ',
- ];
- $this->drupalPostForm('media/add/video', $edit, t('Save and publish'));
- // Obtain the video id.
- $media_id = $this->container->get('entity.query')->get('media')->condition('bundle', 'video')->sort('created', 'DESC')->execute();
- $media_id = reset($media_id);
- $edit['id'] = $media_id;
-
- return $edit;
- }
-
- /**
- * Loads the media entity item.
- *
- * @param int $id
- * The id of the item.
- *
- * @return \Drupal\media_entity\MediaInterface
- * The media entity item.
- */
- public function loadMediaItem($id) {
- $item = $this->container->get('entity_type.manager')
- ->getStorage('media')
- ->loadUnchanged($id);
- return $item;
- }
-
-}