first commit

This commit is contained in:
julien
2026-03-20 22:16:20 +01:00
commit 42a4ba3e9a
136 changed files with 10141 additions and 0 deletions

View File

@@ -0,0 +1,67 @@
<?php
declare(strict_types=1);
namespace Tests\Post;
use App\Post\Infrastructure\PdoTaxonUsageChecker;
use PDO;
use PDOStatement;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
#[\PHPUnit\Framework\Attributes\AllowMockObjectsWithoutExpectations]
final class TaxonUsageCheckerTest extends TestCase
{
/** @var PDO&MockObject */
private PDO $db;
private PdoTaxonUsageChecker $checker;
protected function setUp(): void
{
$this->db = $this->createMock(PDO::class);
$this->checker = new PdoTaxonUsageChecker($this->db);
}
private function stmtForScalar(mixed $value): MockObject&PDOStatement
{
$stmt = $this->createMock(PDOStatement::class);
$stmt->method('execute')->willReturn(true);
$stmt->method('fetchColumn')->willReturn($value);
return $stmt;
}
public function testReturnsTrueWhenTaxonIsReferencedByAtLeastOnePost(): void
{
$stmt = $this->stmtForScalar(1);
$this->db->method('prepare')->willReturn($stmt);
self::assertTrue($this->checker->isTaxonInUse(5));
}
public function testReturnsFalseWhenTaxonIsUnused(): void
{
$stmt = $this->stmtForScalar(0);
$this->db->method('prepare')->willReturn($stmt);
self::assertFalse($this->checker->isTaxonInUse(5));
}
public function testQueriesPostsTableWithTaxonIdentifier(): void
{
$stmt = $this->stmtForScalar(0);
$this->db->expects($this->once())
->method('prepare')
->with($this->stringContains('FROM posts'))
->willReturn($stmt);
$stmt->expects($this->once())
->method('execute')
->with([':category_id' => 5]);
$this->checker->isTaxonInUse(5);
}
}