Skip to content

Commit 8144bc2

Browse files
committed
chore: add more tests for task changes
1 parent 38e78ef commit 8144bc2

File tree

2 files changed

+86
-0
lines changed

2 files changed

+86
-0
lines changed

src/__tests__/tasks/data-view-collection.test.ts

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,5 +322,48 @@ describe('DataView task collection', () => {
322322
expect(result).toContain('\t- [ ] Child task 1');
323323
expect(result).toContain('\t- [x] Child task 2');
324324
});
325+
326+
it('preserves space indentation pattern when outputting', () => {
327+
// Use 2-space indentation (2 spaces = level 1, 4 spaces = level 2)
328+
sut = new DataViewTaskCollection(
329+
'## Header 1\n\n- [ ] Parent\n - [ ] Child level 1\n - [ ] Child level 2\n'
330+
);
331+
332+
const tasks = sut.getAllTasks();
333+
expect(tasks.length).toEqual(1);
334+
expect(tasks[0].hasChildren()).toBe(true);
335+
336+
const result = tasks[0].toString();
337+
// Should preserve the 2-space pattern
338+
expect(result).toContain('- [ ] Parent');
339+
expect(result).toContain(' - [ ] Child level 1');
340+
expect(result).toContain(' - [ ] Child level 2');
341+
});
342+
343+
it('handles orphaned sub-tasks when parent indent is skipped', () => {
344+
// Task at level 2 without a level 1 parent - should be added as top-level
345+
sut = new DataViewTaskCollection(
346+
'## Header 1\n\n- [ ] Parent\n\t\t- [ ] Orphaned child at level 2\n'
347+
);
348+
349+
const tasks = sut.getAllTasks();
350+
// The orphaned task should be added as a top-level task since there's no level 1 parent
351+
expect(tasks.length).toEqual(2);
352+
expect(tasks[0].getName()).toEqual('Parent');
353+
expect(tasks[1].getName()).toEqual('Orphaned child at level 2');
354+
});
355+
356+
it('handles task with due date in toString when dueDate is set', () => {
357+
sut = new DataViewTaskCollection('## Header 1\n\n- [ ] Task with due [due:: 2024-01-15]\n');
358+
359+
const tasks = sut.getAllTasks();
360+
const task = tasks[0];
361+
362+
// Call isDue to set the dueDate property
363+
task.isDue();
364+
365+
const result = task.toString();
366+
expect(result).toContain('[due:: 2024-01-15]');
367+
});
325368
});
326369
});

src/__tests__/tasks/emoji-collection.test.ts

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -376,5 +376,48 @@ describe('Emoji task collection', () => {
376376
expect(result).toContain('\t- [ ] Child');
377377
expect(result).toContain('\t\t- [ ] Grandchild');
378378
});
379+
380+
it('preserves space indentation pattern when outputting', () => {
381+
// Use 2-space indentation (2 spaces = level 1, 4 spaces = level 2)
382+
sut = new EmojiTaskCollection(
383+
'## Header 1\n\n- [ ] Parent\n - [ ] Child level 1\n - [ ] Child level 2\n'
384+
);
385+
386+
const tasks = sut.getAllTasks();
387+
expect(tasks.length).toEqual(1);
388+
expect(tasks[0].hasChildren()).toBe(true);
389+
390+
const result = tasks[0].toString();
391+
// Should preserve the 2-space pattern
392+
expect(result).toContain('- [ ] Parent');
393+
expect(result).toContain(' - [ ] Child level 1');
394+
expect(result).toContain(' - [ ] Child level 2');
395+
});
396+
397+
it('handles orphaned sub-tasks when parent indent is skipped', () => {
398+
// Task at level 2 without a level 1 parent - should be added as top-level
399+
sut = new EmojiTaskCollection(
400+
'## Header 1\n\n- [ ] Parent\n\t\t- [ ] Orphaned child at level 2\n'
401+
);
402+
403+
const tasks = sut.getAllTasks();
404+
// The orphaned task should be added as a top-level task since there's no level 1 parent
405+
expect(tasks.length).toEqual(2);
406+
expect(tasks[0].getName()).toEqual('Parent');
407+
expect(tasks[1].getName()).toEqual('Orphaned child at level 2');
408+
});
409+
410+
it('handles task with due date in toString when dueDate is set', () => {
411+
sut = new EmojiTaskCollection('## Header 1\n\n- [ ] Task with due 📅 2024-01-15\n');
412+
413+
const tasks = sut.getAllTasks();
414+
const task = tasks[0];
415+
416+
// Call isDue to set the dueDate property
417+
task.isDue();
418+
419+
const result = task.toString();
420+
expect(result).toContain('📅 2024-01-15');
421+
});
379422
});
380423
});

0 commit comments

Comments
 (0)