Goal-Calibration/tests/Fakes/FakePlanRepository.php

40 lines
808 B
PHP

<?php
namespace Tests\Fakes;
use App\Plan\CreatePlanDto;
use App\Plan\Plan;
use App\Plan\PlanRepository;
class FakePlanRepository implements PlanRepository
{
private array $existingPlans = [];
public function create(CreatePlanDto $dto): Plan
{
$id = $this->nextId();
$plan = new Plan(
id: $id,
name: $dto->name,
user: $dto->user,
);
$this->existingPlans[$id] = $plan;
return $plan;
}
private function nextId(): int
{
return count($this->existingPlans);
}
public function find(int $id): ?Plan
{
return array_find(
$this->existingPlans,
function (Plan $plan) use ($id) {
return $plan->getId() === $id;
}
);
}
}