Add RealTimeUpdatesOptions test

This commit is contained in:
Alejandro Celaya
2025-07-04 10:07:40 +02:00
parent f4aaf02d55
commit 26fef87f3b
2 changed files with 49 additions and 9 deletions

View File

@@ -0,0 +1,41 @@
<?php
namespace Config\Options;
use PHPUnit\Framework\Attributes\Test;
use PHPUnit\Framework\Attributes\TestWith;
use PHPUnit\Framework\TestCase;
use Shlinkio\Shlink\Core\Config\Options\RealTimeUpdatesOptions;
use Shlinkio\Shlink\Core\EventDispatcher\Topic;
use Shlinkio\Shlink\Core\Exception\ValidationException;
class RealTimeUpdatesOptionsTest extends TestCase
{
#[Test]
#[TestWith([null, ['NEW_VISIT', 'NEW_SHORT_URL_VISIT', 'NEW_ORPHAN_VISIT', 'NEW_SHORT_URL']])]
#[TestWith([['NEW_VISIT'], ['NEW_VISIT']])]
#[TestWith([['NEW_SHORT_URL_VISIT', 'NEW_ORPHAN_VISIT'], ['NEW_SHORT_URL_VISIT', 'NEW_ORPHAN_VISIT']])]
public function expectedTopicsAreResolved(array|null $providedTopics, array $expectedTopics): void
{
$options = new RealTimeUpdatesOptions($providedTopics);
self::assertEquals($expectedTopics, $options->enabledTopics);
}
#[Test]
public function exceptionIsThrownIfAnyProvidedTopicIsInvalid(): void
{
$this->expectException(ValidationException::class);
new RealTimeUpdatesOptions(['NEW_SHORT_URL_VISIT', 'invalid']);
}
#[Test]
public function checkingIfTopicIsEnabledWorks(): void
{
$options = new RealTimeUpdatesOptions(['NEW_ORPHAN_VISIT', 'NEW_SHORT_URL']);
self::assertTrue($options->isTopicEnabled(Topic::NEW_ORPHAN_VISIT));
self::assertTrue($options->isTopicEnabled(Topic::NEW_SHORT_URL));
self::assertFalse($options->isTopicEnabled(Topic::NEW_VISIT));
self::assertFalse($options->isTopicEnabled(Topic::NEW_SHORT_URL_VISIT));
}
}