acquia_dam-1.0.0-rc1/tests/src/Kernel/MediaIntegrationTest.php
tests/src/Kernel/MediaIntegrationTest.php
<?php
declare(strict_types=1);
namespace Drupal\Tests\acquia_dam\Kernel;
use Drupal\acquia_dam\Entity\MediaSourceField;
use Drupal\acquia_dam\Plugin\Field\FieldType\AssetItem;
use Drupal\file\FileInterface;
use Drupal\media\Entity\Media;
use Drupal\media\Entity\MediaType;
use Drupal\media\MediaInterface;
/**
* Media integration tests.
*
* @group acquia_dam
*/
final class MediaIntegrationTest extends AcquiaDamKernelTestBase {
/**
* Tests the configuration install for the module.
*/
public function testInstall(): void {
$this->installConfig([
'image',
'media',
'media_library',
'acquia_dam',
]);
self::assertNotNull(MediaType::load('acquia_dam_pdf_asset'));
self::assertNotNull(MediaType::load('acquia_dam_video_asset'));
}
/**
* Tests the media source plugin.
*/
public function testMediaSource(): void {
$this->drupalSetUpCurrentUser();
$this->setDamSiteToken();
$media_source_manager = $this->container->get('plugin.manager.media.source');
self::assertTrue($media_source_manager->hasDefinition('acquia_dam_asset:pdf'));
self::assertTrue($media_source_manager->hasDefinition('acquia_dam_asset:video'));
$media_type = $this->createPdfMediaType();
$media = Media::create([
'bundle' => $media_type->id(),
'acquia_dam_asset_id' => [
'asset_id' => '0324b0b2-5293-4aa0-b0aa-c85b003395e2',
'version_id' => '7b67948f-ee7e-405c-a0cd-344a24d8afb2',
'external_id' => '8a1ouvfchk',
],
]);
$media->save();
assert($media instanceof MediaInterface);
self::assertEquals('0324b0b2-5293-4aa0-b0aa-c85b003395e2', $media->get('acquia_dam_asset_id')->asset_id);
self::assertEquals('8a1ouvfchk', $media->get('acquia_dam_asset_id')->external_id);
self::assertEquals(
'public://acquia_dam_thumbnails/0324b0b2-5293-4aa0-b0aa-c85b003395e2/7b67948f-ee7e-405c-a0cd-344a24d8afb2.png',
$media_type->getSource()->getMetadata($media, 'thumbnail_uri')
);
self::assertFileExists($media_type->getSource()->getMetadata($media, 'thumbnail_uri'));
}
/**
* Tests that a version ID is updated when a media entity is inserted.
*/
public function testMediaPreSave(): void {
$media_type = $this->createVideoMediaType();
$media = Media::create([
'bundle' => $media_type->id(),
'acquia_dam_asset_id' => [
'asset_id' => 'efb03f75-3c42-497b-baa9-5ec79d1f56af',
'version_id' => '',
'external_id' => '',
],
]);
$media->save();
assert($media instanceof MediaInterface);
$source_field_item = $media->get(MediaSourceField::SOURCE_FIELD_NAME)->first();
assert($source_field_item instanceof AssetItem);
self::assertEquals('efb03f75-3c42-497b-baa9-5ec79d1f56af', $source_field_item->asset_id);
self::assertEquals('04984534-8682-4fbf-95ae-f3c7b46af9ee', $source_field_item->version_id);
self::assertEquals('mnmc58hipn', $source_field_item->external_id);
$revision_id = $media->getRevisionId();
$media->setNewRevision();
$source_field_item->version_id = 'a_new_version';
$media->save();
$media = $this->reloadEntity($media);
assert($media instanceof MediaInterface);
$source_field_item = $media->get(MediaSourceField::SOURCE_FIELD_NAME)->first();
assert($source_field_item instanceof AssetItem);
self::assertEquals('efb03f75-3c42-497b-baa9-5ec79d1f56af', $source_field_item->asset_id);
self::assertEquals('a_new_version', $source_field_item->version_id);
$media_storage = $this->container->get('entity_type.manager')->getStorage('media');
$media_revision = $media_storage->loadRevision($revision_id);
assert($media_revision instanceof MediaInterface);
$source_field_item = $media_revision->get(MediaSourceField::SOURCE_FIELD_NAME)->first();
assert($source_field_item instanceof AssetItem);
self::assertEquals('efb03f75-3c42-497b-baa9-5ec79d1f56af', $source_field_item->asset_id);
self::assertEquals('04984534-8682-4fbf-95ae-f3c7b46af9ee', $source_field_item->version_id);
}
/**
* Tests that a thumbnail is mapped when a media entity is inserted.
*/
public function testMediaThumbnails(): void {
$media_type = $this->createVideoMediaType();
$media = Media::create([
'name' => 'SD-Social Promo.mp4',
'bundle' => $media_type->id(),
'acquia_dam_asset_id' => [
'asset_id' => 'efb03f75-3c42-497b-baa9-5ec79d1f56af',
'version_id' => '',
'external_id' => '',
],
]);
self::assertTrue($media->get('thumbnail')->isEmpty());
$media->save();
self::assertFalse($media->get('thumbnail')->isEmpty());
$thumbnail = $media->get('thumbnail')->entity;
self::assertInstanceOf(FileInterface::class, $thumbnail);
self::assertEquals(
'public://acquia_dam_thumbnails/efb03f75-3c42-497b-baa9-5ec79d1f56af/04984534-8682-4fbf-95ae-f3c7b46af9ee.png',
$thumbnail->getFileUri()
);
$revision_id = $media->getRevisionId();
$media->get(MediaSourceField::SOURCE_FIELD_NAME)->version_id = '04984534-8682-4fbf-95ae-f3c7b46af9ee';
$media->setNewRevision(TRUE);
$media->updateQueuedThumbnail();
$media->save();
$media = $this->reloadEntity($media);
$thumbnail = $media->get('thumbnail')->entity;
self::assertInstanceOf(FileInterface::class, $thumbnail);
self::assertEquals(
'public://acquia_dam_thumbnails/efb03f75-3c42-497b-baa9-5ec79d1f56af/04984534-8682-4fbf-95ae-f3c7b46af9ee.png',
$thumbnail->getFileUri()
);
$media_storage = $this->container->get('entity_type.manager')->getStorage('media');
$media_revision = $media_storage->loadRevision($revision_id);
assert($media_revision instanceof MediaInterface);
self::assertEquals(
'public://acquia_dam_thumbnails/efb03f75-3c42-497b-baa9-5ec79d1f56af/04984534-8682-4fbf-95ae-f3c7b46af9ee.png',
$media_revision->get('thumbnail')->entity->getFileUri()
);
}
}
