Files
xboct-flow/src/commands/openTask.test.ts
T

66 lines
1.8 KiB
TypeScript

import { beforeEach, describe, expect, it } from "vitest";
import { TASK_FILE_EXTENSION } from "@/model/taskFile";
import { err } from "neverthrow";
import { InMemoryFileSystem } from "../../tests/helpers/InMemoryFileSystem";
import { appError, AppErrorVariant } from "@/error";
import { TaskPriority } from "@/model/taskPriority";
import { TaskStatus } from "@/model/taskStatus";
import { FsTaskRepository } from "@/storage/FsTaskRepository";
import { openTask } from "./openTask";
describe("openTask", () => {
const folder = "/tasks";
let repo: FsTaskRepository;
beforeEach(() => {
repo = new FsTaskRepository(new InMemoryFileSystem(), TASK_FILE_EXTENSION);
});
it("returns file path and task for an existing id", async () => {
const created = await repo.create(folder, {
title: "Open me",
description: "body",
status: TaskStatus.OPEN,
priority: TaskPriority.HIGH,
tags: [],
assignee: "",
});
const result = await openTask(repo, {
folderPath: folder,
id: created.id,
});
expect(result.isOk()).toBe(true);
if (result.isErr()) return;
expect(result.value.path).toBe(`/tasks/open-me${TASK_FILE_EXTENSION}`);
expect(result.value.task).toEqual(created);
});
it("returns not-found for unknown id", async () => {
const result = await openTask(repo, {
folderPath: folder,
id: "missing",
});
expect(result).toEqual(
err(appError(AppErrorVariant.NOT_FOUND, { id: "missing" })),
);
});
it("rejects missing folder", async () => {
const result = await openTask(repo, {
folderPath: undefined,
id: "x",
});
expect(result).toEqual(err(appError(AppErrorVariant.NO_FOLDER)));
});
it("rejects missing id", async () => {
const result = await openTask(repo, {
folderPath: folder,
id: undefined,
});
expect(result).toEqual(err(appError(AppErrorVariant.NO_ID)));
});
});