diff --git a/services/nginx/app/tests/Api/VehiclesApiTest.php b/services/nginx/app/tests/Api/VehiclesApiTest.php new file mode 100644 index 00000000..2298e39f --- /dev/null +++ b/services/nginx/app/tests/Api/VehiclesApiTest.php @@ -0,0 +1,96 @@ +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, + ]); +});