mirror of
https://github.com/pooyash1998/chartspark.git
synced 2026-07-22 06:53:29 +00:00
49 lines
1.5 KiB
TypeScript
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);
|
|
});
|
|
});
|
|
});
|