From fa156fd155666c9cd314540875ef83e763388fd0 Mon Sep 17 00:00:00 2001 From: Yisroel Baum Date: Wed, 3 Dec 2025 21:58:26 +0200 Subject: [PATCH] get all bids of freight order --- src/Bid/BidRepository.php | 5 +++ src/Bid/UseCases/GetBidsOfFreightOrder.php | 17 ++++++++ .../UseCases/GetBidsOfFreightOrderRequest.php | 10 +++++ tests/Fakes/Bid/FakeBidRepository.php | 9 +++++ .../UseCases/GetBidsOfFreightOrderTest.php | 39 +++++++++++++++++++ 5 files changed, 80 insertions(+) create mode 100644 src/Bid/UseCases/GetBidsOfFreightOrder.php create mode 100644 src/Bid/UseCases/GetBidsOfFreightOrderRequest.php create mode 100644 tests/Unit/Bid/UseCases/GetBidsOfFreightOrderTest.php diff --git a/src/Bid/BidRepository.php b/src/Bid/BidRepository.php index e72582e..46eb8fc 100644 --- a/src/Bid/BidRepository.php +++ b/src/Bid/BidRepository.php @@ -6,4 +6,9 @@ interface BidRepository { public function save(Bid $bid): Bid; public function find(string $id): ?Bid; + + /** + * @return Bid[] + */ + public function findByFreightOrderId(int $freightOrderId): array; } diff --git a/src/Bid/UseCases/GetBidsOfFreightOrder.php b/src/Bid/UseCases/GetBidsOfFreightOrder.php new file mode 100644 index 0000000..a0759ff --- /dev/null +++ b/src/Bid/UseCases/GetBidsOfFreightOrder.php @@ -0,0 +1,17 @@ +bidRepo->findByFreightOrderId($dto->freightOrderId); + } +} diff --git a/src/Bid/UseCases/GetBidsOfFreightOrderRequest.php b/src/Bid/UseCases/GetBidsOfFreightOrderRequest.php new file mode 100644 index 0000000..a5e75f7 --- /dev/null +++ b/src/Bid/UseCases/GetBidsOfFreightOrderRequest.php @@ -0,0 +1,10 @@ +existingBids, + function (Bid $bid) use ($freightOrderId){ + return $bid->getFreightOrderId() === $freightOrderId; + }); + } } diff --git a/tests/Unit/Bid/UseCases/GetBidsOfFreightOrderTest.php b/tests/Unit/Bid/UseCases/GetBidsOfFreightOrderTest.php new file mode 100644 index 0000000..abb8b40 --- /dev/null +++ b/tests/Unit/Bid/UseCases/GetBidsOfFreightOrderTest.php @@ -0,0 +1,39 @@ +bidRepo = new FakeBidRepository(); + $this->useCase = new GetBidsOfFreightOrder($this->bidRepo); + } + + public function test_get_one_bid(): void + { + $this->bidRepo->save(new Bid(0, 0, 0, false, false, 0, '', [])); + $dto = new GetBidsOfFreightOrderRequest(freightOrderId: 0); + $bids = $this->useCase->execute($dto); + $this->assertInstanceOf(Bid::class, $bids[0]); + } + + public function test_get_two_bids(): void + { + $this->bidRepo->save(new Bid(0, 0, 0, false, false, 0, '', [])); + $this->bidRepo->save(new Bid(1, 0, 0, false, false, 0, '', [])); + $dto = new GetBidsOfFreightOrderRequest(freightOrderId: 0); + $bids = $this->useCase->execute($dto); + $this->assertInstanceOf(Bid::class, $bids[1]); + } +}