freight order repo and fake impls of find and save

This commit is contained in:
Yisroel Baum 2025-11-12 22:10:20 +02:00
parent 3be8eee948
commit 6ad041a945
Signed by: yisroelbaum
GPG key ID: 0FA60884F75520A9
2 changed files with 59 additions and 3 deletions

View file

@ -0,0 +1,10 @@
<?php
namespace FreightQuote\FreightOrder;
interface FreightOrderRepository
{
public function find(int $id): ?FreightOrder;
public function save(FreightOrder $freightOrder): FreightOrder;
}

View file

@ -2,12 +2,58 @@
namespace Tests\Fakes\FreightOrder; namespace Tests\Fakes\FreightOrder;
use FreightQuote\FreightOrder\FreightOrderRepository;
use FreightQuote\FreightOrder\FreightOrder; use FreightQuote\FreightOrder\FreightOrder;
class FakeFreightOrderRepository class FakeFreightOrderRepository implements FreightOrderRepository
{ {
public function find(): ?FreightOrder /**
* @var FreightOrder[]
*/
private array $existingFreightOrders = [];
public function find(int $id): ?FreightOrder
{ {
return new FreightOrder(); foreach ($this->existingFreightOrders as $freightOrder) {
if ($freightOrder->getId() === $id) {
return new FreightOrder(
$freightOrder->getId(),
$freightOrder->getShipFrom(),
$freightOrder->getShipTo(),
$freightOrder->getPickupDate(),
$freightOrder->getDeliveryDeadline(),
$freightOrder->getLoadDetails(),
$freightOrder->getNotes(),
$freightOrder->getFileAttachments(),
);
}
}
return null;
}
public function save(FreightOrder $freightOrder): FreightOrder
{
$id = $freightOrder->getId();
if ($id === null) {
$id = $this->getNextId();
$freightOrder->setId($id);
}
$this->existingFreightOrders[$id] = $freightOrder;
return new FreightOrder(
$freightOrder->getId(),
$freightOrder->getShipFrom(),
$freightOrder->getShipTo(),
$freightOrder->getPickupDate(),
$freightOrder->getDeliveryDeadline(),
$freightOrder->getLoadDetails(),
$freightOrder->getNotes(),
$freightOrder->getFileAttachments(),
);
}
private function getNextId(): int
{
return count($this->existingFreightOrders);
} }
} }