test get bid and throws error on invalid id

This commit is contained in:
Yisroel Baum 2025-11-19 21:29:36 +02:00
parent b17f6005b7
commit bc6e3e47fe
Signed by: yisroelbaum
GPG key ID: 0FA60884F75520A9
4 changed files with 59 additions and 0 deletions

View file

@ -5,4 +5,5 @@ namespace FreightQuote\Bid;
interface BidRepository
{
public function save(Bid $bid): Bid;
public function find(string $id): ?Bid;
}

View file

@ -0,0 +1,26 @@
<?php
namespace FreightQuote\Bid\UseCases;
use FreightQuote\Bid\Bid;
use FreightQuote\Bid\BidRepository;
use InvalidArgumentException;
class GetBidForCarrier
{
public function __construct(
private BidRepository $bidRepo,
) {}
/**
* @throws InvalidArgumentException
*/
public function execute(GetBidForCarrierRequest $dto): Bid
{
$bid = $this->bidRepo->find($dto->id);
if ($bid === null) {
throw new InvalidArgumentException('Bid not found!');
}
return $bid;
}
}

View file

@ -0,0 +1,10 @@
<?php
namespace FreightQuote\Bid\UseCases;
class GetBidForCarrierRequest
{
public function __construct(
public string $id,
) {}
}

View file

@ -0,0 +1,22 @@
<?php
namespace Tests\Unit\Bid\UseCases;
use FreightQuote\Bid\UseCases\GetBidForCarrier;
use FreightQuote\Bid\UseCases\GetBidForCarrierRequest;
use PHPUnit\Framework\TestCase;
use InvalidArgumentException;
use Tests\Fakes\Bid\FakeBidRepository;
class GetBidForCarrierTest extends TestCase
{
public function test_nonexistant_bid_throws_error(): void
{
$this->expectException(InvalidArgumentException::class);
$bidId = '12345abcd';
$dto = new GetBidForCarrierRequest($bidId);
$bidRepo = new FakeBidRepository();
$useCase = new GetBidForCarrier($bidRepo);
$foundBid = $useCase->execute($dto);
}
}