2026-05-14 04:26:50 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
declare(strict_types=1);
|
|
|
|
|
|
|
|
|
|
namespace App\Tests\Unit\Domain\Article;
|
|
|
|
|
|
|
|
|
|
use App\Domain\Article\ArticleStatus;
|
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
|
|
|
|
|
|
final class ArticleStatusTest extends TestCase
|
|
|
|
|
{
|
2026-05-17 22:44:16 +00:00
|
|
|
public function testValidTransitions(): void
|
2026-05-14 04:26:50 +00:00
|
|
|
{
|
|
|
|
|
$this->assertTrue(ArticleStatus::Ingesting->canTransitionTo(ArticleStatus::Draft));
|
|
|
|
|
$this->assertTrue(ArticleStatus::Draft->canTransitionTo(ArticleStatus::Active));
|
|
|
|
|
$this->assertTrue(ArticleStatus::Draft->canTransitionTo(ArticleStatus::NeedsReview));
|
|
|
|
|
$this->assertTrue(ArticleStatus::NeedsReview->canTransitionTo(ArticleStatus::Draft));
|
|
|
|
|
$this->assertTrue(ArticleStatus::Active->canTransitionTo(ArticleStatus::Listed));
|
|
|
|
|
$this->assertTrue(ArticleStatus::Listed->canTransitionTo(ArticleStatus::Sold));
|
|
|
|
|
}
|
|
|
|
|
|
2026-05-17 22:44:16 +00:00
|
|
|
public function testInvalidTransitions(): void
|
2026-05-14 04:26:50 +00:00
|
|
|
{
|
|
|
|
|
$this->assertFalse(ArticleStatus::Sold->canTransitionTo(ArticleStatus::Draft));
|
|
|
|
|
$this->assertFalse(ArticleStatus::Ingesting->canTransitionTo(ArticleStatus::Sold));
|
|
|
|
|
$this->assertFalse(ArticleStatus::Listed->canTransitionTo(ArticleStatus::Ingesting));
|
|
|
|
|
}
|
|
|
|
|
}
|