feat: tasks workflow
This commit is contained in:
@@ -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()));
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user