Files
pleno-vue/tests/unit/invoicing-period-queue-module.behavior.spec.js
T

57 lines
1.9 KiB
JavaScript

// @vitest-environment jsdom
import { beforeEach, describe, expect, it, vi } from "vitest";
vi.mock("@/components/session/token/SessionUser.vue", () => ({
SessionUser: {},
}));
vi.mock("@/services/economicTransferQueue.js", () => ({
DEFAULT_ECONOMIC_QUEUE_POLL_INTERVAL_MS: 10,
ECONOMIC_QUEUE_STATUS: {
QUEUED: "QUEUED",
PROCESSING: "PROCESSING",
COMPLETED: "COMPLETED",
FAILED: "FAILED",
},
buildCollectedInvoiceEconomicPayload: vi.fn(),
enqueueEconomicTransferJob: vi.fn(),
fetchEconomicTransferJobStatus: vi.fn(),
getEconomicApiErrorMessage: vi.fn((error, fallback) => fallback),
isEconomicQueueStatusTerminal: vi.fn(),
retryEconomicTransferJob: vi.fn(),
}));
import {
addInvoiceCollectionsToQueue,
clearQueue,
finishPeriodRefresh,
isPeriodCustomerRefreshLoading,
isPeriodInvoiceCollectionRefreshLoading,
periodCustomerRefreshInProgress,
periodInvoiceCollectionRefreshInProgress,
} from "@/views/dashboards/superUserDashboard/InvoicingBillingPeriod/imports/InvoicingBillingPeriodImportInvoiceQueue.vue";
describe("Invoicing period queue module state", () => {
beforeEach(() => {
clearQueue();
});
it("keeps a customer loading until all tracked collection refreshes finish", () => {
addInvoiceCollectionsToQueue([7001, 7002], { customerNumber: 1001 });
expect(periodCustomerRefreshInProgress.value).toEqual([1001]);
expect(periodInvoiceCollectionRefreshInProgress.value).toEqual([7001, 7002]);
finishPeriodRefresh([1001], [7001]);
expect(isPeriodCustomerRefreshLoading(1001)).toBe(true);
expect(isPeriodInvoiceCollectionRefreshLoading(7001)).toBe(false);
expect(isPeriodInvoiceCollectionRefreshLoading(7002)).toBe(true);
finishPeriodRefresh([1001], [7002]);
expect(isPeriodCustomerRefreshLoading(1001)).toBe(false);
expect(isPeriodInvoiceCollectionRefreshLoading(7002)).toBe(false);
});
});