41 lines
1.2 KiB
TypeScript
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();
|
|
});
|
|
});
|