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/default.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/default.png', $media_revision->get('thumbnail')->entity->getFileUri() ); } }