pooyash1998_chartspark/tests/parsers/checkboxParser.test.ts
2026-04-26 08:43:06 +02:00

49 lines
1.5 KiB
TypeScript

import { CheckboxParser } from '../../src/parsers/checkboxParser';
describe('CheckboxParser', () => {
const parser = new CheckboxParser();
describe('canParse', () => {
it('detects a checkbox list', () => {
expect(parser.canParse('- [x] Done\n- [ ] Todo')).toBe(true);
});
it('detects uppercase X', () => {
expect(parser.canParse('- [X] Done')).toBe(true);
});
it('rejects plain text', () => {
expect(parser.canParse('some text')).toBe(false);
});
it('rejects a markdown table', () => {
expect(parser.canParse('| A | B |\n|---|---|\n| 1 | 2 |')).toBe(false);
});
});
describe('parse', () => {
it('counts completed and remaining correctly', () => {
const text = '- [x] Task 1\n- [x] Task 2\n- [ ] Task 3';
const result = parser.parse(text);
expect(result.values[0]).toBe(2); // completed
expect(result.values[1]).toBe(1); // remaining
expect(result.labels).toEqual(['Completed', 'Remaining']);
});
it('handles all checked', () => {
const text = '- [x] A\n- [x] B';
const result = parser.parse(text);
expect(result.values[0]).toBe(2);
expect(result.values[1]).toBe(0);
});
it('handles all unchecked', () => {
const text = '- [ ] A\n- [ ] B\n- [ ] C';
const result = parser.parse(text);
expect(result.values[0]).toBe(0);
expect(result.values[1]).toBe(3);
});
it('sets metadata.totalItems', () => {
const text = '- [x] A\n- [ ] B';
expect(parser.parse(text).metadata.totalItems).toBe(2);
});
});
});