mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/shipping-portal.git
synced 2026-08-19 04:24:12 +00:00
98 lines
3.1 KiB
PHP
98 lines
3.1 KiB
PHP
<?php
|
|
|
|
namespace Tests\Unit\App\Classes\Modules\Orders\ControllersLogic;
|
|
|
|
use App\Classes\Modules\Orders\ControllersLogic\ListOrderTrackingLogic;
|
|
use App\Classes\Modules\Orders\Services\ListsOrderTracking;
|
|
use App\Models\Order;
|
|
use App\Models\PackingList;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Artisan;
|
|
use Mockery;
|
|
use Tests\TestCase;
|
|
|
|
class ListOrderTrackingLogicTest extends TestCase
|
|
{
|
|
|
|
protected $listsOrderTrackingMock;
|
|
protected $listOrderTrackingLogic;
|
|
|
|
protected function setUp(): void
|
|
{
|
|
parent::setUp();
|
|
|
|
$this->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);
|
|
}
|
|
}
|