headless_cms-1.0.3/modules/headless_cms_notify/tests/src/Kernel/MessageDiscoveryTest.php
modules/headless_cms_notify/tests/src/Kernel/MessageDiscoveryTest.php
<?php
declare(strict_types=1);
namespace Drupal\Tests\headless_cms_notify\Kernel;
use Drupal\KernelTests\KernelTestBase;
use Drupal\headless_cms_notify\NotifyMessage\HeadlessNotifyCacheRebuildMessage;
use Drupal\headless_cms_notify\NotifyMessage\HeadlessNotifyEntityOperationMessage;
use Drupal\headless_cms_notify\NotifyMessage\HeadlessNotifyMessageDiscoveryService;
use Drupal\headless_cms_notify_test\NotifyMessage\HeadlessNotifyTestMessage;
/**
* Tests message discovery.
*/
class MessageDiscoveryTest extends KernelTestBase {
/**
* {@inheritdoc}
*/
protected static $modules = [
'consumers',
'headless_cms',
'headless_cms_notify',
];
/**
* Test message discovery.
*/
public function testGetMessageTypes(): void {
$discovery = $this->container->get(HeadlessNotifyMessageDiscoveryService::class);
$types = $discovery->getMessageTypes();
$this->assertCount(2, $types);
$this->assertEquals(HeadlessNotifyEntityOperationMessage::class, $types[0]->className);
$this->assertEquals('entity_operation', $types[0]->messageTypeId);
$this->assertEquals('Entity Operation', $types[0]->messageTypeLabel);
$this->assertEquals(HeadlessNotifyCacheRebuildMessage::class, $types[1]->className);
$this->assertEquals('cache_rebuild', $types[1]->messageTypeId);
$this->assertEquals('Cache Rebuild', $types[1]->messageTypeLabel);
}
/**
* Test message discovery with additional module.
*/
public function testGetMessageTypesAdditionalModule(): void {
$this->enableModules(['headless_cms_notify_test']);
$discovery = $this->container->get(HeadlessNotifyMessageDiscoveryService::class);
$types = $discovery->getMessageTypes();
$this->assertCount(3, $types);
$this->assertEquals(HeadlessNotifyTestMessage::class, $types[2]->className);
$this->assertEquals('headless_notify_test', $types[2]->messageTypeId);
$this->assertEquals('Headless Notify Test', $types[2]->messageTypeLabel);
}
/**
* Test message discovery cache.
*/
public function testCache(): void {
$discovery = $this->container->get(HeadlessNotifyMessageDiscoveryService::class);
$uncached = $discovery->getMessageTypes();
$cached = $discovery->getMessageTypes();
$this->assertEquals($uncached, $cached);
}
}
