import { assert } from 'chai'; import { before, describe, it } from 'mocha'; import { window } from 'vscode'; import { parseDocument } from '../../parse'; import { TheTask } from '../../TheTask'; import { DueState } from '../../types'; import { headerDelimiter } from './testUtils'; const editor = window.activeTextEditor!; describe(`${headerDelimiter('parse document')}`, () => { let tasks: TheTask[] = []; before(async () => { const parsed = await parseDocument(editor.document); tasks = parsed.tasksAsTree; return Promise.resolve(undefined); }); it('13 Multiple links', () => { const links = tasks[12].links; assert.lengthOf(links, 2); assert.equal(links[0].value, 'https://www.google.com/'); assert.equal(links[1].value, 'https://github.com/'); }); it('13 Multiple links ranges', () => { const links = tasks[12].links; assert.deepEqual(links[0].characterRange, [9, 31]); assert.deepEqual(links[1].characterRange, [37, 56]); }); it('14 Special tag `{overdue}`', () => { assert.equal(tasks[13].due?.isDue, DueState.Overdue); }); it('16,17,18,19 Nested tasks', () => { const at16 = tasks[15]!; const at17 = tasks[15]!.subtasks[0]; assert.lengthOf(at16.subtasks, 2); assert.lengthOf(at17.subtasks, 1); assert.deepEqual(at16.subtasks.map(task => task.title), ['17 Nested 1lvl', '19 Nested 1lvl']); assert.deepEqual(at17.subtasks.map(task => task.title), ['18 Nested 2lvl']); }); });