mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-03-14 08:01:02 -07:00
73 lines
1.8 KiB
TypeScript
73 lines
1.8 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright 2025 Google LLC
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
import { describe, it, expect } from 'vitest';
|
|
import { parseMarkdownTodos } from './planUtils.js';
|
|
|
|
describe('parseMarkdownTodos', () => {
|
|
it('parses basic task list', () => {
|
|
const markdown = `
|
|
# Plan
|
|
- [ ] Task 1
|
|
- [x] Task 2
|
|
- [/] Task 3
|
|
- [-] Task 4
|
|
`;
|
|
const todos = parseMarkdownTodos(markdown);
|
|
expect(todos).toEqual([
|
|
{ description: 'Task 1', status: 'pending' },
|
|
{ description: 'Task 2', status: 'completed' },
|
|
{ description: 'Task 3', status: 'in_progress' },
|
|
{ description: 'Task 4', status: 'cancelled' },
|
|
]);
|
|
});
|
|
|
|
it('parses alternate in-progress markers', () => {
|
|
const markdown = `
|
|
- [>] Task 5
|
|
- [ / ] Task 6
|
|
`;
|
|
const todos = parseMarkdownTodos(markdown);
|
|
expect(todos).toEqual([
|
|
{ description: 'Task 5', status: 'in_progress' },
|
|
{ description: 'Task 6', status: 'in_progress' },
|
|
]);
|
|
});
|
|
|
|
it('handles nested lists', () => {
|
|
const markdown = `
|
|
- [ ] Outer
|
|
- [x] Inner
|
|
`;
|
|
const todos = parseMarkdownTodos(markdown);
|
|
expect(todos).toEqual([
|
|
{ description: 'Outer', status: 'pending' },
|
|
{ description: 'Inner', status: 'completed' },
|
|
]);
|
|
});
|
|
|
|
it('ignores non-task list items', () => {
|
|
const markdown = `
|
|
- Just a bullet
|
|
- [ ] A task
|
|
`;
|
|
const todos = parseMarkdownTodos(markdown);
|
|
expect(todos).toEqual([{ description: 'A task', status: 'pending' }]);
|
|
});
|
|
|
|
it('is case-sensitive for completed marker', () => {
|
|
const markdown = `
|
|
- [x] lowercase
|
|
- [X] uppercase
|
|
`;
|
|
const todos = parseMarkdownTodos(markdown);
|
|
expect(todos).toEqual([
|
|
{ description: 'lowercase', status: 'completed' },
|
|
{ description: 'uppercase', status: 'pending' },
|
|
]);
|
|
});
|
|
});
|