- Adjusted the interactive model default choice to be 'no change' instead of 'cancel setup' - E2E script has been perfected and works as designed provided there are all provider API keys .env in the root - Fixes the entire test suite to make sure it passes with the new architecture. - Fixes dependency command to properly show there is a validation failure if there is one. - Refactored config-manager.test.js mocking strategy and fixed assertions to read the real supported-models.json - Fixed rule-transformer.test.js assertion syntax and transformation logic adjusting replacement for search which was too broad. - Skip unstable tests in utils.test.js (log, readJSON, writeJSON error paths) due to SIGABRT crash. These tests trigger a native crash (SIGABRT), likely stemming from a conflict between internal chalk usage within the functions and Jest's test environment, possibly related to ESM module handling.
60 lines
2.0 KiB
JavaScript
60 lines
2.0 KiB
JavaScript
/**
|
|
* Task finder tests
|
|
*/
|
|
|
|
import { findTaskById } from '../../scripts/modules/utils.js';
|
|
import { sampleTasks, emptySampleTasks } from '../fixtures/sample-tasks.js';
|
|
|
|
describe('Task Finder', () => {
|
|
describe('findTaskById function', () => {
|
|
test('should find a task by numeric ID', () => {
|
|
const result = findTaskById(sampleTasks.tasks, 2);
|
|
expect(result.task).toBeDefined();
|
|
expect(result.task.id).toBe(2);
|
|
expect(result.task.title).toBe('Create Core Functionality');
|
|
expect(result.originalSubtaskCount).toBeNull();
|
|
});
|
|
|
|
test('should find a task by string ID', () => {
|
|
const result = findTaskById(sampleTasks.tasks, '2');
|
|
expect(result.task).toBeDefined();
|
|
expect(result.task.id).toBe(2);
|
|
expect(result.originalSubtaskCount).toBeNull();
|
|
});
|
|
|
|
test('should find a subtask using dot notation', () => {
|
|
const result = findTaskById(sampleTasks.tasks, '3.1');
|
|
expect(result.task).toBeDefined();
|
|
expect(result.task.id).toBe(1);
|
|
expect(result.task.title).toBe('Create Header Component');
|
|
expect(result.task.isSubtask).toBe(true);
|
|
expect(result.task.parentTask.id).toBe(3);
|
|
expect(result.originalSubtaskCount).toBeNull();
|
|
});
|
|
|
|
test('should return null for non-existent task ID', () => {
|
|
const result = findTaskById(sampleTasks.tasks, 99);
|
|
expect(result.task).toBeNull();
|
|
expect(result.originalSubtaskCount).toBeNull();
|
|
});
|
|
|
|
test('should return null for non-existent subtask ID', () => {
|
|
const result = findTaskById(sampleTasks.tasks, '3.99');
|
|
expect(result.task).toBeNull();
|
|
expect(result.originalSubtaskCount).toBeNull();
|
|
});
|
|
|
|
test('should return null for non-existent parent task ID in subtask notation', () => {
|
|
const result = findTaskById(sampleTasks.tasks, '99.1');
|
|
expect(result.task).toBeNull();
|
|
expect(result.originalSubtaskCount).toBeNull();
|
|
});
|
|
|
|
test('should return null when tasks array is empty', () => {
|
|
const result = findTaskById(emptySampleTasks.tasks, 1);
|
|
expect(result.task).toBeNull();
|
|
expect(result.originalSubtaskCount).toBeNull();
|
|
});
|
|
});
|
|
});
|