agent-ecosystem/test/features/member-work-sync/core/SyncDecisionPolicy.test.ts
2026-05-07 01:22:16 +03:00

36 lines
1.2 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { decideMemberWorkSyncStatus } from '@features/member-work-sync/core/domain';
import type { MemberWorkSyncAgenda, MemberWorkSyncReport } from '@features/member-work-sync/contracts';
describe('decideMemberWorkSyncStatus', () => {
it('returns caught_up when canonical filtering leaves no actionable work', () => {
const agenda: MemberWorkSyncAgenda = {
teamName: 'forge-labs',
memberName: 'jack',
generatedAt: '2026-05-06T19:06:07.257Z',
fingerprint: 'agenda-empty',
items: [],
diagnostics: [],
};
const staleReport: MemberWorkSyncReport = {
teamName: 'forge-labs',
memberName: 'jack',
state: 'still_working',
agendaFingerprint: 'stale-owned-in-progress-task',
reportedAt: '2026-05-06T19:00:26.089Z',
accepted: true,
};
const decision = decideMemberWorkSyncStatus({
agenda,
latestAcceptedReport: staleReport,
nowIso: '2026-05-06T19:06:07.257Z',
});
expect(decision.state).toBe('caught_up');
expect(decision.acceptedReport).toBeUndefined();
expect(decision.diagnostics).toContain('agenda_empty');
});
});