import "../../plug-api/lib/syscall_mock.ts"; import { parseMarkdown } from "$common/markdown_parser/parser.ts"; import { extractTasks } from "./task.ts"; import { assertEquals } from "@std/assert"; const itemsMd = ` * Item 1 #tag1 #tag2 [age: 100] * [ ] Task 1 [age: 200] * [ ] Task 2 #tag3 #tag1 * [x] Task 2.1 `; Deno.test("Test task extraction", async () => { const t = parseMarkdown(itemsMd); const tasks = await extractTasks("test", t); assertEquals(tasks.length, 3); assertEquals(tasks[0].name, "Task 1"); assertEquals(tasks[0].age, 200); assertEquals(tasks[0].page, "test"); assertEquals(tasks[0].text, "Task 1 [age: 200]"); assertEquals(new Set(tasks[0].itags), new Set(["tag1", "tag2", "task"])); assertEquals(tasks[0].parent, "test@1"); assertEquals(tasks[1].name, "Task 2"); // Don't inherit attributes assertEquals(tasks[1].age, undefined); // But inherit tags through itags, not tags assertEquals( new Set(tasks[1].tags), new Set(["tag1", "tag3"]), ); assertEquals( new Set(tasks[1].itags), new Set(["tag1", "tag3", "task", "tag2"]), ); assertEquals(tasks[1].parent, "test@1"); // Deeply assertEquals(tasks[2].name, "Task 2.1"); assertEquals(tasks[2].tags, []); assertEquals( new Set(tasks[2].itags), new Set(["tag1", "tag3", "task", "tag2"]), ); });