setRepository = new FakeSetRepository(); } public function testUpdatesOnlyName(): void { $set = $this->createSet(); $updateName = new UpdateName($this->setRepository); $updatedSet = $updateName->execute(new UpdateNameRequest( id: $set->getId(), name: 'Updated Set', )); $this->assertSame('Updated Set', $updatedSet->getName()); $this->assertSame( $set->getDescription(), $updatedSet->getDescription(), ); $this->assertSame( $set->getIconImageUrl(), $updatedSet->getIconImageUrl(), ); } public function testRejectsBlankName(): void { $set = $this->createSet(); $updateName = new UpdateName($this->setRepository); $this->expectException(BadRequestException::class); $this->expectExceptionMessage('name is required'); $updateName->execute(new UpdateNameRequest( id: $set->getId(), name: '', )); } private function createSet(): DomainSet { return $this->setRepository->create(new CreateSetDto( name: 'Original Set', description: 'Original set description', iconImageUrl: 'set-icons/original.png', )); } }