Files
pleno-vue/tests/unit/orders-draft-count-refresh.spec.js
T
Jeppe Bundgaard 817c174e0e Add unit tests for Orders navigation count refresh and fallback customer caching, update POS mobile accessibility labels:
- Introduced `orders-draft-count-refresh.spec.js` for testing `Orders` navigation hooks on customer changes and order deletions.
- Enhanced `use-draft-transaction-customer.spec.js` with tests for clearing cached fallback customers.
- Updated POS mobile components with accessibility labels and localization for image viewer and customer suggestion buttons.
- Added support for `vehicleCustomerSuggestionsGet` handling in e2e mocks and tests.
2026-04-21 15:20:50 +02:00

100 lines
2.7 KiB
JavaScript

import { beforeEach, describe, expect, it, vi } from "vitest";
const addObjectMock = vi.hoisted(() => vi.fn(async () => ({ data: { data: { id: 91 } } })));
const setColumnMock = vi.hoisted(() => vi.fn(async () => ({ data: { success: true } })));
const deleteObjectMock = vi.hoisted(() => vi.fn(async () => ({ data: { success: true } })));
const dispatchNavigationCountRefreshMock = vi.hoisted(() => vi.fn());
vi.mock("sweetalert2", () => ({
default: {
fire: vi.fn(() => Promise.resolve()),
close: vi.fn(),
},
}));
vi.mock("@/i18n", () => ({
default: {
global: {
t: (key) => key,
},
},
}));
vi.mock("@/components/models/navigation/items/navigationCountEvents.js", () => ({
dispatchNavigationCountRefresh: dispatchNavigationCountRefreshMock,
}));
vi.mock("@/components/session/token/SessionUser/Objects/ObjectsGlobal.vue", () => ({
ObjectsGlobal: {
add: {
object: addObjectMock,
},
set: {
column: setColumnMock,
},
delete: {
object: deleteObjectMock,
},
showDeleteConfirmationModal: vi.fn(),
},
}));
vi.mock("@/components/session/token/SessionUser.vue", () => ({
SessionUser: {
objects: {
orders: {
functions: {
get_customer_id: vi.fn(),
},
set: {
customer_id: vi.fn(),
invoice_collection_id: vi.fn(),
},
},
collectedOrderInvoices: {
functions: {
showInvoiceCollectionPickerForm: vi.fn(),
},
},
},
request: vi.fn(() => Promise.resolve({ data: { data: {} } })),
functions: {
parseErrorMessage: vi.fn(() => "error"),
},
},
}));
vi.mock("@/components/session/authenticatedRequest.vue", () => ({
authenticatedRequest: vi.fn(),
}));
vi.mock("@/components/shop/OrdersItems.vue", () => ({
editOrderItem: vi.fn(),
getOrderItems: vi.fn(async () => ({ data: { data: [] } })),
}));
import { Orders } from "@/components/session/token/SessionUser/Objects/Orders.vue";
describe("Orders draft count refresh hooks", () => {
beforeEach(() => {
addObjectMock.mockClear();
setColumnMock.mockClear();
deleteObjectMock.mockClear();
dispatchNavigationCountRefreshMock.mockClear();
});
it("refreshes navigation counts after changing an order customer", async () => {
await Orders.set.customer_id(45, 6001);
expect(setColumnMock).toHaveBeenCalledWith("/orders", 45, "customer_id", 6001);
expect(dispatchNavigationCountRefreshMock).toHaveBeenCalledTimes(1);
});
it("refreshes navigation counts after deleting an order", async () => {
await Orders.delete.single(45);
expect(deleteObjectMock).toHaveBeenCalledWith("/orders", 45);
expect(dispatchNavigationCountRefreshMock).toHaveBeenCalledTimes(1);
});
});