acquia_lift-8.x-4.3/modules/acquia_lift_publisher/tests/src/Kernel/EventSubscriber/EnqueueEligibility/IsExcludedImageStyleTest.php
modules/acquia_lift_publisher/tests/src/Kernel/EventSubscriber/EnqueueEligibility/IsExcludedImageStyleTest.php
<?php
namespace Drupal\Tests\acquia_lift_publisher\Kernel\EventSubscriber\EnqueueEligibility;
use Drupal\acquia_contenthub_publisher\ContentHubPublisherEvents;
use Drupal\acquia_contenthub_publisher\Event\ContentHubEntityEligibilityEvent;
use Drupal\KernelTests\KernelTestBase;
use Drupal\Tests\node\Traits\ContentTypeCreationTrait;
use Drupal\Tests\node\Traits\NodeCreationTrait;
use Drupal\Tests\taxonomy\Traits\TaxonomyTestTrait;
/**
* Tests if ImageStyle is excluded.
*
* @group acquia_lift_publisher
*
* @package Drupal\Tests\acquia_lift_publisher\Kernel\EventSubscriber\EnqueueEligibility
*
* @covers \Drupal\acquia_lift_publisher\EventSubscriber\EnqueueEligibility\IsExcludedImageStyle
*
* @requires module depcalc
*/
class IsExcludedImageStyleTest extends KernelTestBase {
use ContentTypeCreationTrait;
use NodeCreationTrait;
use TaxonomyTestTrait;
/**
* {@inheritdoc}
*/
protected static $modules = [
'field',
'filter',
'node',
'image',
'text',
'user',
'system',
'taxonomy',
'depcalc',
'acquia_contenthub',
'acquia_contenthub_publisher',
'acquia_lift_publisher',
];
/**
* Lift Registry.
*
* @var array
*/
protected static $registry = [];
/**
* Event dispatcher.
*
* @var \Symfony\Component\EventDispatcher\EventDispatcher
*/
protected $eventDispatcher;
/**
* Image style storage handler.
*
* @var \Drupal\image\ImageStyleStorage
*/
private $imageStyleStorage;
/**
* {@inheritdoc}
*/
protected function setUp(): void {
parent::setUp();
$this->installSchema('acquia_contenthub_publisher', ['acquia_contenthub_publisher_export_tracking']);
$this->installConfig([
'filter',
'node',
'system',
'image',
'acquia_lift_publisher',
]);
$this->installSchema('system', ['key_value_expire', 'sequences']);
$this->installSchema('node', ['node_access']);
$this->installEntitySchema('node');
$this->installEntitySchema('user');
$this->installEntitySchema('taxonomy_term');
$this->eventDispatcher = \Drupal::service('event_dispatcher');
try {
$this->imageStyleStorage = \Drupal::entityTypeManager()
->getStorage('image_style');
$this->prepareContent();
}
catch (\Exception $exception) {
$this->markTestIncomplete($exception->getMessage());
}
}
/**
* Tests entity eligibility.
*
* @param string $operation
* Entity operation.
* @param string $index
* Item's index in registry.
* @param bool $expected
* Expected result.
*
* @dataProvider onEnqueueCandidateEntityDataProvider
*/
public function testOnEnqueueCandidateEntity(string $operation, string $index, bool $expected) {
if (empty(self::$registry[$index])) {
$this->markTestIncomplete(sprintf('Specified item %s not found in registry', $index));
}
$entity = self::$registry[$index];
$event = new ContentHubEntityEligibilityEvent($entity, $operation);
$this->eventDispatcher->dispatch(ContentHubPublisherEvents::ENQUEUE_CANDIDATE_ENTITY, $event);
$message = sprintf('Entity with index %s has wrong expected eligibility', $index);
$this->assertEquals($event->getEligibility(), $expected, $message);
}
/**
* Prepare test content.
*
* @throws \Exception
*/
protected function prepareContent() {
$this->createContentType(['type' => 'page']);
/** @var \Drupal\taxonomy\Entity\Vocabulary $vocabulary */
$vocabulary = $this->createVocabulary();
self::$registry = [
'node' => $this->createNode(),
'term' => $this->createTerm($vocabulary),
'eligible_image_style' => $this->imageStyleStorage->load('large'),
'not_eligible_image_style' => $this->imageStyleStorage->load('acquia_lift_publisher_preview_image'),
];
}
/**
* Data provider for testOnEnqueueCandidateEntity.
*/
public function onEnqueueCandidateEntityDataProvider() {
yield ['insert', 'node', TRUE];
yield ['insert', 'term', TRUE];
yield ['insert', 'eligible_image_style', TRUE];
yield ['insert', 'not_eligible_image_style', FALSE];
yield ['update', 'node', TRUE];
yield ['update', 'term', TRUE];
yield ['update', 'not_eligible_image_style', FALSE];
yield ['update', 'eligible_image_style', TRUE];
}
}
