diff --git a/src/Bid/BidRepository.php b/src/Bid/BidRepository.php index d9d49f5..e72582e 100644 --- a/src/Bid/BidRepository.php +++ b/src/Bid/BidRepository.php @@ -5,4 +5,5 @@ namespace FreightQuote\Bid; interface BidRepository { public function save(Bid $bid): Bid; + public function find(string $id): ?Bid; } diff --git a/src/Bid/UseCases/GetBidForCarrier.php b/src/Bid/UseCases/GetBidForCarrier.php new file mode 100644 index 0000000..90404c2 --- /dev/null +++ b/src/Bid/UseCases/GetBidForCarrier.php @@ -0,0 +1,26 @@ +bidRepo->find($dto->id); + if ($bid === null) { + throw new InvalidArgumentException('Bid not found!'); + } + return $bid; + } +} diff --git a/src/Bid/UseCases/GetBidForCarrierRequest.php b/src/Bid/UseCases/GetBidForCarrierRequest.php new file mode 100644 index 0000000..bccbdfc --- /dev/null +++ b/src/Bid/UseCases/GetBidForCarrierRequest.php @@ -0,0 +1,10 @@ +expectException(InvalidArgumentException::class); + $bidId = '12345abcd'; + $dto = new GetBidForCarrierRequest($bidId); + $bidRepo = new FakeBidRepository(); + $useCase = new GetBidForCarrier($bidRepo); + $foundBid = $useCase->execute($dto); + } +}