import { describe, expect, it } from 'vitest'; import { liveStepOf } from '../internal/domain/live-step.ts'; const steps = [ { item: 'S1', guide: '' }, { item: 'S2', guide: '' }, { item: 'T_release', guide: '' }, ]; describe('liveStepOf:这一单此刻在办哪一步', () => { it('在场的第一个还没收掉的项', () => { expect(liveStepOf(steps, new Set(), [{ id: 'S1' }, { id: 'S2' }])?.item).toBe('S1'); }); it('**收掉的项要跳过** —— 带 repetitionRule 的项收了之后仍是 Enabled,不跳就整单钉在第一步', () => { expect(liveStepOf(steps, new Set(['S1']), [{ id: 'S1' }, { id: 'S2' }])?.item).toBe('S2'); }); it('在场的都收完了 → undefined', () => { expect(liveStepOf(steps, new Set(['S1', 'S2']), [{ id: 'S1' }, { id: 'S2' }])).toBeUndefined(); }); it('在场的项没有剧本 → undefined(没写剧本的活动照旧跑)', () => { expect(liveStepOf(steps, new Set(), [{ id: 'X' }])).toBeUndefined(); }); it('次序按 onStage 给的次序,不按 steps 的次序', () => { expect(liveStepOf(steps, new Set(), [{ id: 'S2' }, { id: 'S1' }])?.item).toBe('S2'); }); });