import { describe, it, expect } from 'vitest';
import { TestConductor } from '@ensemble-edge/conductor/testing';
describe('schedule member', () => {
it('should schedule task', async () => {
const conductor = await TestConductor.create();
const result = await conductor.executeMember('schedule', {
delay: 60000,
action: 'send-reminder',
data: { userId: 123 }
});
expect(result).toBeSuccessful();
expect(result.output.scheduleId).toBeDefined();
expect(result.output.executeAt).toBeGreaterThan(Date.now());
});
it('should execute scheduled task', async () => {
const conductor = await TestConductor.create();
const schedule = await conductor.executeMember('schedule', {
delay: 1000,
action: 'test-action'
});
// Fast-forward time
await conductor.advanceTime(1000);
// Verify task executed
const execution = await conductor.getScheduledExecution(schedule.output.scheduleId);
expect(execution.status).toBe('completed');
});
it('should cancel scheduled task', async () => {
const conductor = await TestConductor.create();
const schedule = await conductor.executeMember('schedule', {
delay: 60000,
action: 'test-action'
});
// Cancel before execution
const cancelled = await conductor.cancelSchedule(schedule.output.scheduleId);
expect(cancelled).toBe(true);
// Verify not executed
await conductor.advanceTime(60000);
const execution = await conductor.getScheduledExecution(schedule.output.scheduleId);
expect(execution.status).toBe('cancelled');
});
});