extract to setUp and test that carrier and freight orders know about each other

This commit is contained in:
Yisroel Baum 2025-11-13 20:31:49 +02:00
parent 4971b86180
commit 0afdaa76d6
Signed by: yisroelbaum
GPG key ID: 0FA60884F75520A9

View file

@ -2,14 +2,27 @@
namespace Tests\Unit\FreightOrder\UseCases;
use FreightQuote\Carrier\Carrier;
use PHPUnit\Framework\TestCase;
use FreightQuote\FreightOrder\UseCases\CreateFreightOrder;
use FreightQuote\FreightOrder\UseCases\CreateFreightOrderRequestDTO;
use Tests\Fakes\Carrier\FakeCarrierRepository;
use Tests\Fakes\FreightOrder\FakeFreightOrderRepository;
use DateTime;
class CreateFreightOrderTest extends TestCase
{
private FakeFreightOrderRepository $freightOrderRepo;
private FakeCarrierRepository $carrierRepo;
private CreateFreightOrder $useCase;
public function setUp(): void
{
$this->freightOrderRepo = new FakeFreightOrderRepository();
$this->carrierRepo = new FakeCarrierRepository();
$this->useCase = new CreateFreightOrder($this->freightOrderRepo);
}
public function test_create_freight_order(): void
{
$dto = new CreateFreightOrderRequestDTO(
@ -21,10 +34,8 @@ class CreateFreightOrderTest extends TestCase
notes: 'some notes',
fileAttachments: ['path/to/file', 'another/path/file'],
);
$freightOrderRepo = new FakeFreightOrderRepository();
$useCase = new CreateFreightOrder($freightOrderRepo);
$createdFreightOrder = $useCase->execute($dto);
$foundFreightOrder = $freightOrderRepo->find(
$createdFreightOrder = $this->useCase->execute($dto);
$foundFreightOrder = $this->freightOrderRepo->find(
$createdFreightOrder->getId()
);
$this->assertNotNull($foundFreightOrder);
@ -36,4 +47,36 @@ class CreateFreightOrderTest extends TestCase
$this->assertEquals($dto->notes, $foundFreightOrder->getNotes());
$this->assertEquals($dto->fileAttachments, $foundFreightOrder->getFileAttachments());
}
public function test_carrier_is_connected_to_order(): void
{
$carrierId = 0;
$this->carrierRepo->save(new Carrier(
id: $carrierId,
email: 'test@email.com',
companyName: 'company name',
contactPerson: 'person',
phoneNumber: '123456798',
notes: 'some notes',
loadProfile: 'LTL/FTL',
countriesServing: ['USA'],
freightOrders: [],
));
$dto = new CreateFreightOrderRequestDTO(
shipFrom: 'ny',
shipTo: 'nj',
pickupDate: new DateTime('+5 days'),
deliveryDeadline: new DateTime('+10 days'),
loadDetails: 'some details',
notes: 'some notes',
fileAttachments: ['path/to/file', 'another/path/file'],
carrierIds: [$carrierId],
);
$createdFreightOrder = $this->useCase->execute($dto);
$foundCarrier = $this->carrierRepo->find($carrierId);
$this->assertEquals(
[$createdFreightOrder->getId()],
$foundCarrier->getOrderIds()
);
}
}