34 lines
1.4 KiB
TypeScript
34 lines
1.4 KiB
TypeScript
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');
|
|
});
|
|
});
|