77 lines
2.2 KiB
JavaScript
77 lines
2.2 KiB
JavaScript
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
|
|
const printItemLabelMock = vi.fn();
|
|
const formatPrintErrorMessageMock = vi.fn();
|
|
|
|
vi.mock('../../../src/api/labels.js', () => ({
|
|
printItemLabel: (...args) => printItemLabelMock(...args),
|
|
formatPrintErrorMessage: (...args) => formatPrintErrorMessageMock(...args),
|
|
}));
|
|
|
|
vi.mock('../../../src/api/stock.js', () => ({
|
|
getStockEntry: vi.fn(),
|
|
adjustStockEntry: vi.fn(),
|
|
useStockItem: vi.fn(),
|
|
lookupItemDetails: vi.fn(),
|
|
patchStockItem: vi.fn(),
|
|
listStockEntries: vi.fn(async () => []),
|
|
listGroupedStockEntries: vi.fn(async () => []),
|
|
updateStockItem: vi.fn(),
|
|
}));
|
|
|
|
vi.mock('../../../src/api/locations.js', () => ({
|
|
fetchLocations: vi.fn(async () => ({ flat: [], tree: [] })),
|
|
}));
|
|
|
|
const { stockDetailPageData } = await import('../../../src/features/stock/stock-detail-page.js');
|
|
|
|
describe('stock print label actions', () => {
|
|
beforeEach(() => {
|
|
printItemLabelMock.mockReset();
|
|
formatPrintErrorMessageMock.mockReset();
|
|
globalThis.window = {
|
|
__loncApp: {
|
|
navigate: vi.fn(),
|
|
},
|
|
};
|
|
});
|
|
|
|
afterEach(() => {
|
|
vi.restoreAllMocks();
|
|
delete globalThis.window;
|
|
});
|
|
|
|
it('prints from stock detail and shows success alert', async () => {
|
|
printItemLabelMock.mockResolvedValueOnce(null);
|
|
const addAlert = vi.fn();
|
|
const store = { addAlert };
|
|
const data = stockDetailPageData(store);
|
|
data.entry = { uuid_b64: 'uuid-1', name: 'Rice' };
|
|
|
|
await data.printLabel();
|
|
|
|
expect(printItemLabelMock).toHaveBeenCalledWith(store, 'uuid-1');
|
|
expect(addAlert).toHaveBeenCalledWith({
|
|
type: 'success',
|
|
message: 'Rice label sent to printer.',
|
|
});
|
|
});
|
|
|
|
it('shows parsed warning when detail printing fails', async () => {
|
|
printItemLabelMock.mockRejectedValueOnce(new Error('boom'));
|
|
formatPrintErrorMessageMock.mockReturnValueOnce('Printer unavailable.');
|
|
const addAlert = vi.fn();
|
|
const store = { addAlert };
|
|
const data = stockDetailPageData(store);
|
|
data.entry = { uuid_b64: 'uuid-1', name: 'Rice' };
|
|
|
|
await data.printLabel();
|
|
|
|
expect(addAlert).toHaveBeenCalledWith({
|
|
type: 'warning',
|
|
message: 'Could not print Rice label: Printer unavailable.',
|
|
});
|
|
});
|
|
|
|
});
|