Files
pleno-vue/tests/unit/user-vehicle-request.spec.js
T

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);
});
});