From 76b14cd6674754bcbfa717b0c03e74ea7064fdb2 Mon Sep 17 00:00:00 2001 From: Dillon Ngo Date: Tue, 25 Mar 2025 06:24:43 +0800 Subject: [PATCH] New UI to show YD Order Tracking infomation --- Jenkinsfile | 2 +- .../ListOrderTrackingLogicTest.php | 97 +++++++++++++++++++ 2 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 tests/Unit/Orders/ControllersLogic/ListOrderTrackingLogicTest.php diff --git a/Jenkinsfile b/Jenkinsfile index cdcdad22..18a9e8b7 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -58,7 +58,7 @@ pipeline { stage('Tests') { steps { - //sh 'vendor/bin/phpunit tests/Unit' + sh 'vendor/bin/phpunit tests/Unit' script{ currentBuild.description = 'Step 4 of 6 Completed' } diff --git a/tests/Unit/Orders/ControllersLogic/ListOrderTrackingLogicTest.php b/tests/Unit/Orders/ControllersLogic/ListOrderTrackingLogicTest.php new file mode 100644 index 00000000..42b34c84 --- /dev/null +++ b/tests/Unit/Orders/ControllersLogic/ListOrderTrackingLogicTest.php @@ -0,0 +1,97 @@ +listsOrderTrackingMock = Mockery::mock(ListsOrderTracking::class); + $this->listOrderTrackingLogic = new ListOrderTrackingLogic($this->listsOrderTrackingMock); + } + + protected function tearDown(): void + { + Mockery::close(); + parent::tearDown(); + } + + public function test_logic_with_valid_tracking_number() + { + // Arrange + $trackingNo = '123456789'; + $reference = 'X202503131317208'; + $orderId = 1; + $packingListId = 1; + + $mockOrder = Mockery::mock('overload:' . Order::class)->makePartial(); + $mockOrder->shouldReceive('where') + ->with('reference', $trackingNo) + ->andReturnSelf(); + $mockOrder->shouldReceive('first') + ->andReturn($mockOrder); + $mockOrder->id = $orderId; + $mockOrder->reference = $trackingNo; + + $mockPackingList = Mockery::mock('overload:' . PackingList::class)->makePartial(); + $mockPackingList->id = $packingListId; + $mockPackingList->reference = $reference; + + $mockOrder->shouldReceive('packingLists')->andReturn(collect([$mockPackingList])); + + Artisan::shouldReceive('call') + ->once() + ->withArgs(['process-yd-by-traking-no-data-command', ['trackingNo' => $reference]]) + ->andReturn(0); + + $this->listsOrderTrackingMock->shouldReceive('deserializeFilters') + ->andReturn(['tracking_no' => $trackingNo]); + + $this->listsOrderTrackingMock->shouldReceive('execute') + ->andReturn(collect([])); + + $fakeRequest = Request::create('/tracking', 'GET', ['filters' => json_encode(['tracking_no' => $trackingNo])]); + + // Act + $response = $this->listOrderTrackingLogic->logic($fakeRequest); + + // Assert + $this->assertInstanceOf(JsonResponse::class, $response); + } + + public function test_logic_with_invalid_tracking_number() + { + // Arrange + Artisan::shouldReceive('call')->never(); + + $this->listsOrderTrackingMock->shouldReceive('deserializeFilters') + ->andReturn(['tracking_no' => 'invalid']); + + $this->listsOrderTrackingMock->shouldReceive('execute') + ->andReturn(collect([])); + + $request = Request::create('/tracking', 'GET', ['filters' => json_encode(['tracking_no' => 'invalid'])]); + + // Act + $fakeRequest = $this->listOrderTrackingLogic->logic($request); + + // Assert + $this->assertInstanceOf(JsonResponse::class, $fakeRequest); + } +}