Add API tests for Vehicles endpoint to validate last_order_id logic
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
usesApiSuite();
|
||||
|
||||
it('returns the newest vehicle last_order_id that still has order items', function (): void {
|
||||
api_test_covers('GET /vehicles', 'happy');
|
||||
|
||||
$session = api_fixtures()->createUserSession(['list_own_vehicles']);
|
||||
$department = api_fixtures()->createDepartment(['name' => 'Vehicle API Department']);
|
||||
$vehicle = api_fixtures()->createVehicle([
|
||||
'customer_id' => $session['user']['customer_number'],
|
||||
'type' => 53,
|
||||
'reg' => 'SIDSTEV1',
|
||||
'reference' => 'VEHICLE-LAST-WASH',
|
||||
]);
|
||||
|
||||
$olderOrder = api_fixtures()->createOrder([
|
||||
'customer_id' => $session['user']['customer_number'],
|
||||
'cashier_id' => $session['user']['id'],
|
||||
'department_id' => $department['id'],
|
||||
'reference' => 'OLDER-ORDER',
|
||||
'reg_1' => $vehicle['reg'],
|
||||
]);
|
||||
api_fixtures()->createOrderItem([
|
||||
'order_id' => $olderOrder['id'],
|
||||
'product_id' => 53,
|
||||
'cashier_id' => $session['user']['id'],
|
||||
'price' => 599,
|
||||
'quantity' => 1,
|
||||
]);
|
||||
|
||||
$newerOrder = api_fixtures()->createOrder([
|
||||
'customer_id' => $session['user']['customer_number'],
|
||||
'cashier_id' => $session['user']['id'],
|
||||
'department_id' => $department['id'],
|
||||
'reference' => 'NEWER-ORDER',
|
||||
'reg_1' => $vehicle['reg'],
|
||||
]);
|
||||
|
||||
$response = api_client()->get('/vehicles?id=' . $vehicle['id'], $session['headers']);
|
||||
|
||||
$response
|
||||
->assertStatus(200)
|
||||
->assertEnvelope()
|
||||
->assertSuccess();
|
||||
|
||||
expect($newerOrder['id'])->toBeGreaterThan($olderOrder['id']);
|
||||
expect($response->data())->toMatchArray([
|
||||
'id' => $vehicle['id'],
|
||||
'reg' => $vehicle['reg'],
|
||||
'last_order_id' => $olderOrder['id'],
|
||||
]);
|
||||
});
|
||||
|
||||
it('returns a null vehicle last_order_id when no order with items exists', function (): void {
|
||||
api_test_covers('GET /vehicles', 'happy');
|
||||
|
||||
$session = api_fixtures()->createUserSession(['list_own_vehicles']);
|
||||
$department = api_fixtures()->createDepartment(['name' => 'Vehicle API Department Null']);
|
||||
$vehicle = api_fixtures()->createVehicle([
|
||||
'customer_id' => $session['user']['customer_number'],
|
||||
'type' => 53,
|
||||
'reg' => 'SIDSTEV2',
|
||||
'reference' => 'VEHICLE-NO-LAST-WASH',
|
||||
]);
|
||||
|
||||
api_fixtures()->createOrder([
|
||||
'customer_id' => $session['user']['customer_number'],
|
||||
'cashier_id' => $session['user']['id'],
|
||||
'department_id' => $department['id'],
|
||||
'reference' => 'EMPTY-ORDER-1',
|
||||
'reg_1' => $vehicle['reg'],
|
||||
]);
|
||||
api_fixtures()->createOrder([
|
||||
'customer_id' => $session['user']['customer_number'],
|
||||
'cashier_id' => $session['user']['id'],
|
||||
'department_id' => $department['id'],
|
||||
'reference' => 'EMPTY-ORDER-2',
|
||||
'reg_1' => $vehicle['reg'],
|
||||
]);
|
||||
|
||||
$response = api_client()->get('/vehicles?id=' . $vehicle['id'], $session['headers']);
|
||||
|
||||
$response
|
||||
->assertStatus(200)
|
||||
->assertEnvelope()
|
||||
->assertSuccess();
|
||||
|
||||
expect($response->data())->toMatchArray([
|
||||
'id' => $vehicle['id'],
|
||||
'reg' => $vehicle['reg'],
|
||||
'last_order_id' => null,
|
||||
]);
|
||||
});
|
||||
Reference in New Issue
Block a user