feat: tasks workflow

This commit is contained in:
2026-07-13 16:00:25 +05:00
parent 9705bac7af
commit ce69209820
15 changed files with 559 additions and 31 deletions
+58
View File
@@ -0,0 +1,58 @@
import { beforeEach, describe, expect, it } from "vitest";
import { err, ok } from "neverthrow";
import { InMemoryFileSystem } from "../../tests/helpers/InMemoryFileSystem";
import { AppError } from "@/error";
import { FsTaskRepository } from "@/storage/FsTaskRepository";
import { deleteTask } from "./deleteTask";
describe("deleteTask", () => {
const folder = "/tasks";
let repo: FsTaskRepository;
beforeEach(() => {
repo = new FsTaskRepository(new InMemoryFileSystem(), ".task.md");
});
it("deletes an existing task", async () => {
const created = await repo.create(folder, {
title: "To delete",
description: "",
status: "todo",
priority: "medium",
tags: [],
assignee: "",
});
const result = await deleteTask(repo, {
folderPath: folder,
id: created.id,
});
expect(result).toEqual(ok(undefined));
expect(await repo.list(folder)).toEqual([]);
});
it("returns not_found for unknown id", async () => {
const result = await deleteTask(repo, {
folderPath: folder,
id: "missing",
});
expect(result).toEqual(err(AppError.notFound()));
});
it("rejects missing folder", async () => {
const result = await deleteTask(repo, {
folderPath: undefined,
id: "x",
});
expect(result).toEqual(err(AppError.noFolder()));
});
it("rejects missing id", async () => {
const result = await deleteTask(repo, {
folderPath: folder,
id: undefined,
});
expect(result).toEqual(err(AppError.noId()));
});
});