diff --git a/src/Bid/UseCases/GetBidForCarrier.php b/src/Bid/UseCases/GetBidForCarrier.php index 1b1a673..f4d1d98 100644 --- a/src/Bid/UseCases/GetBidForCarrier.php +++ b/src/Bid/UseCases/GetBidForCarrier.php @@ -2,7 +2,6 @@ namespace FreightQuote\Bid\UseCases; -use FreightQuote\Bid\Bid; use FreightQuote\Bid\BidRepository; use InvalidArgumentException; @@ -15,19 +14,26 @@ class GetBidForCarrier /** * @throws InvalidArgumentException */ - public function execute(GetBidForCarrierRequest $dto): ?Bid - { + public function execute( + GetBidForCarrierRequest $dto, + ): GetBidForCarrierResponse { $bid = $this->bidRepo->find($dto->id); if ($bid === null) { throw new InvalidArgumentException('Bid not found!'); } if ($bid->isClosed() === true) { - return null; + return new GetBidForCarrierResponse( + isClosed: true, + bid: null, + ); } if ($bid->getWasOpened() === false) { $bid->setWasOpened(true); $this->bidRepo->save($bid); } - return $bid; + return new GetBidForCarrierResponse( + isClosed: false, + bid: $bid, + ); } } diff --git a/src/Bid/UseCases/GetBidForCarrierResponse.php b/src/Bid/UseCases/GetBidForCarrierResponse.php new file mode 100644 index 0000000..a629c3d --- /dev/null +++ b/src/Bid/UseCases/GetBidForCarrierResponse.php @@ -0,0 +1,13 @@ +useCase->execute( + $response = $this->useCase->execute( new GetBidForCarrierRequest($bidId) ); - $this->assertEquals(true, $foundBid->getWasOpened()); + $this->assertEquals(true, $response->bid->getWasOpened()); } - public function test_getting_closed_bid_returns_null(): void + public function test_getting_closed_bid_returns_response_with_null_bid(): void { $this->bidRepo->save(new Bid( 0, @@ -59,8 +60,14 @@ class GetBidForCarrierTest extends TestCase null, null, )); - $this->assertNull($this->useCase->execute( + $response = $this->useCase->execute( new GetBidForCarrierRequest(0), - )); + ); + $this->assertInstanceOf( + GetBidForCarrierResponse::class, + $response + ); + $this->assertNull($response->bid); + $this->assertTrue($response->isClosed); } }