59 lines
1.4 KiB
TypeScript
59 lines
1.4 KiB
TypeScript
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()));
|
|
});
|
|
});
|