61 lines
1.3 KiB
PHP
61 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace Tests\Fakes;
|
|
|
|
use App\Set\CreateSetDto;
|
|
use App\Set\Set as DomainSet;
|
|
use App\Set\SetRepository;
|
|
|
|
class FakeSetRepository implements SetRepository
|
|
{
|
|
/**
|
|
* @var DomainSet[]
|
|
*/
|
|
private array $setsById = [];
|
|
|
|
public function create(CreateSetDto $dto): DomainSet
|
|
{
|
|
$id = count($this->setsById) + 1;
|
|
$set = new DomainSet(
|
|
id: $id,
|
|
name: $dto->name,
|
|
description: $dto->description,
|
|
iconImageUrl: $dto->iconImageUrl,
|
|
);
|
|
$this->setsById[$id] = $set;
|
|
|
|
return $set;
|
|
}
|
|
|
|
public function find(int $id): ?DomainSet
|
|
{
|
|
if (! isset($this->setsById[$id])) {
|
|
return null;
|
|
}
|
|
|
|
return $this->cloneSet($this->setsById[$id]);
|
|
}
|
|
|
|
/**
|
|
* @return DomainSet[]
|
|
*/
|
|
public function getAll(): array
|
|
{
|
|
$sets = [];
|
|
foreach ($this->setsById as $set) {
|
|
$sets[] = $this->cloneSet($set);
|
|
}
|
|
|
|
return $sets;
|
|
}
|
|
|
|
private function cloneSet(DomainSet $set): DomainSet
|
|
{
|
|
return new DomainSet(
|
|
id: $set->getId(),
|
|
name: $set->getName(),
|
|
description: $set->getDescription(),
|
|
iconImageUrl: $set->getIconImageUrl(),
|
|
);
|
|
}
|
|
}
|