From f62b05bc37a0d87d84e88faf693c9a3f0bad9520 Mon Sep 17 00:00:00 2001 From: Yisroel Baum Date: Mon, 25 May 2026 08:24:31 +0300 Subject: [PATCH] test seeded sets --- backend/tests/Fakes/FakeSetRepository.php | 12 +--- .../Element/UseCases/CreateElementTest.php | 25 +++++--- .../tests/Unit/Set/UseCases/CreateSetTest.php | 63 ------------------- 3 files changed, 20 insertions(+), 80 deletions(-) delete mode 100644 backend/tests/Unit/Set/UseCases/CreateSetTest.php diff --git a/backend/tests/Fakes/FakeSetRepository.php b/backend/tests/Fakes/FakeSetRepository.php index 295e619..87ed0fd 100644 --- a/backend/tests/Fakes/FakeSetRepository.php +++ b/backend/tests/Fakes/FakeSetRepository.php @@ -2,7 +2,6 @@ namespace Tests\Fakes; -use App\Set\CreateSetDto; use App\Set\Set as DomainSet; use App\Set\SetRepository; @@ -13,16 +12,9 @@ class FakeSetRepository implements SetRepository */ private array $setsById = []; - public function create(CreateSetDto $dto): DomainSet + public function store(DomainSet $set): void { - $id = count($this->setsById) + 1; - $set = new DomainSet( - id: $id, - name: $dto->name, - ); - $this->setsById[$id] = $set; - - return $set; + $this->setsById[$set->getId()] = $set; } public function find(int $id): ?DomainSet diff --git a/backend/tests/Unit/Element/UseCases/CreateElementTest.php b/backend/tests/Unit/Element/UseCases/CreateElementTest.php index da6f024..26f13a8 100644 --- a/backend/tests/Unit/Element/UseCases/CreateElementTest.php +++ b/backend/tests/Unit/Element/UseCases/CreateElementTest.php @@ -6,7 +6,7 @@ use App\Element\Element; use App\Element\UseCases\CreateElement\CreateElement; use App\Element\UseCases\CreateElement\CreateElementRequest; use App\Exceptions\BadRequestException; -use App\Set\CreateSetDto; +use App\Set\Set as DomainSet; use DomainException; use Tests\Fakes\FakeElementRepository; use Tests\Fakes\FakeSetRepository; @@ -30,9 +30,20 @@ class CreateElementTest extends TestCase ); } + private function seedSet(int $id, string $name): DomainSet + { + $set = new DomainSet( + id: $id, + name: $name, + ); + $this->setRepo->store($set); + + return $set; + } + public function testCreatesRootElement(): void { - $set = $this->setRepo->create(new CreateSetDto('Daily learning')); + $set = $this->seedSet(1, 'Daily learning'); $element = $this->createElement->execute(new CreateElementRequest( setId: $set->getId(), @@ -48,7 +59,7 @@ class CreateElementTest extends TestCase public function testCreatesChildElement(): void { - $set = $this->setRepo->create(new CreateSetDto('Daily learning')); + $set = $this->seedSet(1, 'Daily learning'); $rootElement = $this->createElement->execute( new CreateElementRequest( setId: $set->getId(), @@ -110,7 +121,7 @@ class CreateElementTest extends TestCase public function testThrowsWhenParentElementDoesNotExist(): void { - $set = $this->setRepo->create(new CreateSetDto('Daily learning')); + $set = $this->seedSet(1, 'Daily learning'); $this->expectException(DomainException::class); $this->expectExceptionMessage( @@ -126,7 +137,7 @@ class CreateElementTest extends TestCase public function testThrowsWhenRootElementAlreadyExists(): void { - $set = $this->setRepo->create(new CreateSetDto('Daily learning')); + $set = $this->seedSet(1, 'Daily learning'); $this->createElement->execute(new CreateElementRequest( setId: $set->getId(), title: 'Root', @@ -147,8 +158,8 @@ class CreateElementTest extends TestCase public function testThrowsWhenParentBelongsToAnotherSet(): void { - $parentSet = $this->setRepo->create(new CreateSetDto('Parent set')); - $childSet = $this->setRepo->create(new CreateSetDto('Child set')); + $parentSet = $this->seedSet(1, 'Parent set'); + $childSet = $this->seedSet(2, 'Child set'); $parentElement = $this->createElement->execute( new CreateElementRequest( setId: $parentSet->getId(), diff --git a/backend/tests/Unit/Set/UseCases/CreateSetTest.php b/backend/tests/Unit/Set/UseCases/CreateSetTest.php deleted file mode 100644 index b7c2327..0000000 --- a/backend/tests/Unit/Set/UseCases/CreateSetTest.php +++ /dev/null @@ -1,63 +0,0 @@ -setRepo = new FakeSetRepository(); - $this->elementRepo = new FakeElementRepository(); - $this->createSet = new CreateSet( - $this->setRepo, - $this->elementRepo, - ); - } - - public function testCreatesSet(): void - { - $set = $this->createSet->execute( - new CreateSetRequest('Daily learning') - ); - - $this->assertInstanceOf(DomainSet::class, $set); - $this->assertSame(1, $set->getId()); - $this->assertSame('Daily learning', $set->getName()); - } - - public function testCreatesRootElementForSet(): void - { - $set = $this->createSet->execute( - new CreateSetRequest('Daily learning') - ); - - $elements = $this->elementRepo->findBySet($set); - - $this->assertCount(1, $elements); - $this->assertSame('Daily learning', $elements[0]->getTitle()); - $this->assertSame($set->getId(), $elements[0]->getSet()->getId()); - $this->assertNull($elements[0]->getParentElement()); - } - - public function testThrowsWhenNameMissing(): void - { - $this->expectException(BadRequestException::class); - $this->expectExceptionMessage('name is required'); - - $this->createSet->execute(new CreateSetRequest(null)); - } -}