import { describe, expect, it } from 'vitest'; import { resolveTaskStatusFromVersions, taskStatusFromVersionStatus, } from './dev-plan'; describe('taskStatusFromVersionStatus', () => { it('maps version status to task status', () => { expect(taskStatusFromVersionStatus('PENDING')).toBe('TODO'); expect(taskStatusFromVersionStatus('IN_PROGRESS')).toBe('IN_PROGRESS'); expect(taskStatusFromVersionStatus('TESTING')).toBe('DEVELOPED'); expect(taskStatusFromVersionStatus('RELEASED')).toBe('RELEASED'); expect(taskStatusFromVersionStatus('STOPPED')).toBe('STOPPED'); }); }); describe('resolveTaskStatusFromVersions', () => { it('returns null when no versions', () => { expect(resolveTaskStatusFromVersions([])).toBeNull(); }); it('picks the highest mapped status across versions', () => { expect(resolveTaskStatusFromVersions(['PENDING', 'TESTING'])).toBe('DEVELOPED'); expect(resolveTaskStatusFromVersions(['IN_PROGRESS', 'RELEASED'])).toBe('RELEASED'); }); it('syncs STOPPED only when every linked version is stopped', () => { expect(resolveTaskStatusFromVersions(['STOPPED'])).toBe('STOPPED'); expect(resolveTaskStatusFromVersions(['STOPPED', 'STOPPED'])).toBe('STOPPED'); expect(resolveTaskStatusFromVersions(['STOPPED', 'IN_PROGRESS'])).toBe('IN_PROGRESS'); expect(resolveTaskStatusFromVersions(['STOPPED', 'RELEASED'])).toBe('RELEASED'); }); });