recipe-manager/scripts/__tests__/schedule-workflow.test.ts

41 lines
1.2 KiB
TypeScript

import { describe, it, expect, vi, beforeEach } from 'vitest';
const { runWorkflowMock, generateMorningReportMock } = vi.hoisted(() => ({
runWorkflowMock: vi.fn(),
generateMorningReportMock: vi.fn(),
}));
vi.mock('../run-workflow.ts', () => ({
runWorkflow: runWorkflowMock,
}));
vi.mock('../morning-report.ts', () => ({
generateMorningReport: generateMorningReportMock,
}));
import { runScheduledWorkflow } from '../schedule-workflow.ts';
describe('schedule-workflow', () => {
beforeEach(() => {
vi.clearAllMocks();
});
it('runs workflow in resume mode and then generates morning report', async () => {
runWorkflowMock.mockResolvedValue(undefined);
generateMorningReportMock.mockResolvedValue(undefined);
await runScheduledWorkflow();
expect(runWorkflowMock).toHaveBeenCalledWith({ mode: 'resume' });
expect(generateMorningReportMock).toHaveBeenCalledTimes(1);
});
it('propagates workflow failures and does not run report generation', async () => {
const boom = new Error('workflow exploded');
runWorkflowMock.mockRejectedValue(boom);
await expect(runScheduledWorkflow()).rejects.toThrow('workflow exploded');
expect(generateMorningReportMock).not.toHaveBeenCalled();
});
});