get bid for carrier returns a response object
This commit is contained in:
parent
d9581cf991
commit
e4c535201b
3 changed files with 36 additions and 10 deletions
|
|
@ -2,7 +2,6 @@
|
||||||
|
|
||||||
namespace FreightQuote\Bid\UseCases;
|
namespace FreightQuote\Bid\UseCases;
|
||||||
|
|
||||||
use FreightQuote\Bid\Bid;
|
|
||||||
use FreightQuote\Bid\BidRepository;
|
use FreightQuote\Bid\BidRepository;
|
||||||
use InvalidArgumentException;
|
use InvalidArgumentException;
|
||||||
|
|
||||||
|
|
@ -15,19 +14,26 @@ class GetBidForCarrier
|
||||||
/**
|
/**
|
||||||
* @throws InvalidArgumentException
|
* @throws InvalidArgumentException
|
||||||
*/
|
*/
|
||||||
public function execute(GetBidForCarrierRequest $dto): ?Bid
|
public function execute(
|
||||||
{
|
GetBidForCarrierRequest $dto,
|
||||||
|
): GetBidForCarrierResponse {
|
||||||
$bid = $this->bidRepo->find($dto->id);
|
$bid = $this->bidRepo->find($dto->id);
|
||||||
if ($bid === null) {
|
if ($bid === null) {
|
||||||
throw new InvalidArgumentException('Bid not found!');
|
throw new InvalidArgumentException('Bid not found!');
|
||||||
}
|
}
|
||||||
if ($bid->isClosed() === true) {
|
if ($bid->isClosed() === true) {
|
||||||
return null;
|
return new GetBidForCarrierResponse(
|
||||||
|
isClosed: true,
|
||||||
|
bid: null,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
if ($bid->getWasOpened() === false) {
|
if ($bid->getWasOpened() === false) {
|
||||||
$bid->setWasOpened(true);
|
$bid->setWasOpened(true);
|
||||||
$this->bidRepo->save($bid);
|
$this->bidRepo->save($bid);
|
||||||
}
|
}
|
||||||
return $bid;
|
return new GetBidForCarrierResponse(
|
||||||
|
isClosed: false,
|
||||||
|
bid: $bid,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
13
src/Bid/UseCases/GetBidForCarrierResponse.php
Normal file
13
src/Bid/UseCases/GetBidForCarrierResponse.php
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace FreightQuote\Bid\UseCases;
|
||||||
|
|
||||||
|
use FreightQuote\Bid\Bid;
|
||||||
|
|
||||||
|
class GetBidForCarrierResponse
|
||||||
|
{
|
||||||
|
public function __construct(
|
||||||
|
public bool $isClosed,
|
||||||
|
public ?Bid $bid,
|
||||||
|
) {}
|
||||||
|
}
|
||||||
|
|
@ -5,6 +5,7 @@ namespace Tests\Unit\Bid\UseCases;
|
||||||
use FreightQuote\Bid\Bid;
|
use FreightQuote\Bid\Bid;
|
||||||
use FreightQuote\Bid\UseCases\GetBidForCarrier;
|
use FreightQuote\Bid\UseCases\GetBidForCarrier;
|
||||||
use FreightQuote\Bid\UseCases\GetBidForCarrierRequest;
|
use FreightQuote\Bid\UseCases\GetBidForCarrierRequest;
|
||||||
|
use FreightQuote\Bid\UseCases\GetBidForCarrierResponse;
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
use InvalidArgumentException;
|
use InvalidArgumentException;
|
||||||
use Tests\Fakes\Bid\FakeBidRepository;
|
use Tests\Fakes\Bid\FakeBidRepository;
|
||||||
|
|
@ -41,13 +42,13 @@ class GetBidForCarrierTest extends TestCase
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
));
|
));
|
||||||
$foundBid = $this->useCase->execute(
|
$response = $this->useCase->execute(
|
||||||
new GetBidForCarrierRequest($bidId)
|
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(
|
$this->bidRepo->save(new Bid(
|
||||||
0,
|
0,
|
||||||
|
|
@ -59,8 +60,14 @@ class GetBidForCarrierTest extends TestCase
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
));
|
));
|
||||||
$this->assertNull($this->useCase->execute(
|
$response = $this->useCase->execute(
|
||||||
new GetBidForCarrierRequest(0),
|
new GetBidForCarrierRequest(0),
|
||||||
));
|
);
|
||||||
|
$this->assertInstanceOf(
|
||||||
|
GetBidForCarrierResponse::class,
|
||||||
|
$response
|
||||||
|
);
|
||||||
|
$this->assertNull($response->bid);
|
||||||
|
$this->assertTrue($response->isClosed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue