media_acquiadam-8.x-1.46/tests/src/Unit/AcquiadamServiceTest.php
tests/src/Unit/AcquiadamServiceTest.php
<?php
namespace Drupal\Tests\media_acquiadam\Unit;
use Drupal\Core\DependencyInjection\ContainerBuilder;
use Drupal\media_acquiadam\Acquiadam;
use Drupal\media_acquiadam\AssetDataInterface;
use Drupal\media_acquiadam\Client;
use Drupal\media_acquiadam\Entity\Asset;
use Drupal\Tests\media_acquiadam\Traits\AcquiadamAssetDataTrait;
use Drupal\Tests\media_acquiadam\Traits\AcquiadamConfigTrait;
use Drupal\Tests\media_acquiadam\Traits\AcquiadamLoggerFactoryTrait;
use Drupal\Tests\UnitTestCase;
/**
* Acquia DAM REST extension tests.
*
* @group media_acquiadam
*/
class AcquiadamServiceTest extends UnitTestCase {
use AcquiadamConfigTrait, AcquiadamLoggerFactoryTrait, AcquiadamAssetDataTrait;
/**
* Container builder helper.
*
* @var \Drupal\Core\DependencyInjection\ContainerBuilder
*/
protected $container;
/**
* Acquia DAM client.
*
* @var \Drupal\media_acquiadam\Acquiadam
*/
protected $acquiaDamClient;
/**
* Validate the static cache helper works as expected.
*/
public function testStaticAssetCache() {
$asset = $this->getAssetData();
$this->assertNull($this->acquiaDamClient->staticAssetCache('get',
$asset->id));
$this->acquiaDamClient->staticAssetCache('set', $asset->id, FALSE);
$this->assertFalse($this->acquiaDamClient->staticAssetCache('get',
$asset->id));
$this->acquiaDamClient->staticAssetCache('set', $asset->id, $asset);
$this->assertInstanceOf(Asset::class,
$this->acquiaDamClient->staticAssetCache('get', $asset->id));
$this->acquiaDamClient->staticAssetCache('clear');
$this->assertNull($this->acquiaDamClient->staticAssetCache('get',
$asset->id));
}
/**
* Validates we can fetch an asset.
*/
public function testGetAsset() {
$asset = $this->getAssetData();
// No assets should be primed.
$this->assertNull($this->acquiaDamClient->staticAssetCache('get',
$asset->id));
// Asset should be primed.
$this->assertInstanceOf(Asset::class,
$this->acquiaDamClient->getAsset($asset->id));
$this->assertInstanceOf(Asset::class,
$this->acquiaDamClient->staticAssetCache('get', $asset->id));
// Simulate a cached failed fetch.
$this->acquiaDamClient->staticAssetCache('set', $asset->id, FALSE);
$this->assertFalse($this->acquiaDamClient->getAsset($asset->id));
}
/**
* {@inheritdoc}
*/
protected function setUp() :void {
parent::setUp();
$dam_client = $this->createMock(Client::class);
$dam_client->expects($this->any())
->method('getCategoryData')
->willReturnCallback(function ($category) {
return $this->getCategoryData($category);
});
$dam_client->expects($this->any())
->method('getAsset')
->willReturnCallback(function () {
return $this->getAssetData();
});
$acquiadam_asset_data = $this->createMock(AssetDataInterface::class);
$this->container = new ContainerBuilder();
$this->container->set('logger.factory', $this->getLoggerFactoryStub());
$this->container->set('media_acquiadam.client',
$dam_client);
$this->container->set('media_acquiadam.asset_data', $acquiadam_asset_data);
\Drupal::setContainer($this->container);
$this->acquiaDamClient = Acquiadam::create($this->container);
}
/**
* {@inheritdoc}
*/
public function tearDown(): void {
parent::tearDown();
// Reset the static cache because it will persist between tests.
$this->acquiaDamClient->staticAssetCache('clear');
}
}
