From 0afdaa76d658abd4a5ecb80ca51c90a477c1d168 Mon Sep 17 00:00:00 2001 From: Yisroel Baum Date: Thu, 13 Nov 2025 20:31:49 +0200 Subject: [PATCH] extract to setUp and test that carrier and freight orders know about each other --- .../UseCases/CreateFreightOrderTest.php | 51 +++++++++++++++++-- 1 file changed, 47 insertions(+), 4 deletions(-) diff --git a/tests/Unit/FreightOrder/UseCases/CreateFreightOrderTest.php b/tests/Unit/FreightOrder/UseCases/CreateFreightOrderTest.php index 16311b0..4f85895 100644 --- a/tests/Unit/FreightOrder/UseCases/CreateFreightOrderTest.php +++ b/tests/Unit/FreightOrder/UseCases/CreateFreightOrderTest.php @@ -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() + ); + } }