Files
pleno-vue/tests/unit/use-draft-transaction-customer.spec.js
T

70 lines
2.3 KiB
JavaScript

import { beforeEach, describe, expect, it, vi } from "vitest";
const sessionState = vi.hoisted(() => ({
runtimeConfigValue: { value: null },
canAccessSuperUser: vi.fn(() => false),
getTransactionDraftCustomerNumberConfig: vi.fn(async () => ({ data: { data: [] } })),
}));
vi.mock("@/components/session/token/SessionUser.vue", () => ({
SessionUser: {
runtimeConfig: {
economic: {
transactionDraftCustomerNumber: sessionState.runtimeConfigValue,
},
},
canAccessSuperUser: sessionState.canAccessSuperUser,
superUser: {
modules: {
economic: {
config: {
transactionDraftCustomerNumber: {
get: sessionState.getTransactionDraftCustomerNumberConfig,
},
},
},
},
},
},
}));
describe("useDraftTransactionCustomer", () => {
beforeEach(() => {
vi.resetModules();
sessionState.runtimeConfigValue.value = null;
sessionState.canAccessSuperUser.mockReset();
sessionState.canAccessSuperUser.mockReturnValue(false);
sessionState.getTransactionDraftCustomerNumberConfig.mockReset();
sessionState.getTransactionDraftCustomerNumberConfig.mockResolvedValue({ data: { data: [] } });
});
it("prefers the runtime-configured customer number when available", async () => {
sessionState.runtimeConfigValue.value = 44556677;
const module = await import("@/composables/useDraftTransactionCustomer.js");
expect(module.getDraftTransactionCustomerNumber()).toBe(44556677);
await expect(module.ensureDraftTransactionCustomerLoaded()).resolves.toBe(44556677);
expect(sessionState.getTransactionDraftCustomerNumberConfig).not.toHaveBeenCalled();
});
it("falls back to the e-conomic module config when runtime config is missing", async () => {
sessionState.canAccessSuperUser.mockReturnValue(true);
sessionState.getTransactionDraftCustomerNumberConfig.mockResolvedValue({
data: {
data: [
{
variable: "transactionDraftCustomerNumber",
value: 778899,
},
],
},
});
const module = await import("@/composables/useDraftTransactionCustomer.js");
await expect(module.ensureDraftTransactionCustomerLoaded()).resolves.toBe(778899);
expect(module.getDraftTransactionCustomerNumber()).toBe(778899);
});
});