60 lines
1.6 KiB
JavaScript
60 lines
1.6 KiB
JavaScript
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
|
|
vi.mock("@/components/session/authenticatedRequest.vue", () => ({
|
|
authenticatedRequest: vi.fn(),
|
|
}));
|
|
|
|
vi.mock("@/components/request/HandleGlobalError.vue", () => ({
|
|
parseError: vi.fn(),
|
|
}));
|
|
|
|
import { authenticatedRequest } from "@/components/session/authenticatedRequest.vue";
|
|
import { addVehicleUser, vehicles } from "@/components/session/user/UserVehicleRequest.vue";
|
|
|
|
describe("UserVehicleRequest", () => {
|
|
beforeEach(() => {
|
|
vi.clearAllMocks();
|
|
vehicles.value = [];
|
|
});
|
|
|
|
it("creates customer vehicles through the shared endpoint with wash subscriptions disabled", async () => {
|
|
authenticatedRequest.mockResolvedValue({
|
|
data: {
|
|
data: {
|
|
id: 123,
|
|
reg: "AB12345",
|
|
wash_subscription: false,
|
|
},
|
|
},
|
|
});
|
|
|
|
const createdVehicle = await addVehicleUser("AB12345", "53", "Fleet ref");
|
|
|
|
expect(authenticatedRequest).toHaveBeenCalledWith("/vehicles", "POST", {
|
|
reg: "AB12345",
|
|
type: 53,
|
|
wash_subscription: false,
|
|
reference: "Fleet ref",
|
|
});
|
|
expect(createdVehicle).toEqual({
|
|
id: 123,
|
|
reg: "AB12345",
|
|
wash_subscription: false,
|
|
});
|
|
expect(vehicles.value).toEqual([
|
|
{
|
|
id: 123,
|
|
reg: "AB12345",
|
|
wash_subscription: false,
|
|
},
|
|
]);
|
|
});
|
|
|
|
it("parses and rethrows create errors so forms can keep the user on the page", async () => {
|
|
const error = new Error("Request failed");
|
|
authenticatedRequest.mockRejectedValue(error);
|
|
|
|
await expect(addVehicleUser("AB12345", "53")).rejects.toBe(error);
|
|
});
|
|
});
|