kaneo (minimalist kanban) fork to experiment adding a tangled integration
github.com/usekaneo/kaneo
1import { describe, expect, it } from "vitest";
2import {
3 extractIssuePriority,
4 extractIssueStatus,
5} from "../../../../../apps/api/src/plugins/github/utils/extract-priority";
6
7describe("extractIssuePriority", () => {
8 it("returns the first valid priority label", () => {
9 expect(
10 extractIssuePriority([
11 "type:bug",
12 { name: "priority:high" },
13 "priority:low",
14 ]),
15 ).toBe("high");
16 });
17
18 it("returns null for missing or malformed priority labels", () => {
19 expect(extractIssuePriority(undefined)).toBeNull();
20 expect(extractIssuePriority(["priority:critical"])).toBeNull();
21 expect(extractIssuePriority([{ name: "type:feature" }])).toBeNull();
22 });
23
24 it("treats case-sensitive malformed labels as invalid", () => {
25 expect(
26 extractIssuePriority(["Priority:high", "priority:URGENT"]),
27 ).toBeNull();
28 });
29});
30
31describe("extractIssueStatus", () => {
32 it("normalizes whitespace and casing", () => {
33 expect(
34 extractIssueStatus(["kind:feature", { name: "status: In-Review " }]),
35 ).toBe("in-review");
36 });
37
38 it("returns null for missing labels or invalid slugs", () => {
39 expect(extractIssueStatus(undefined)).toBeNull();
40 expect(extractIssueStatus([{ name: "priority:high" }])).toBeNull();
41 expect(extractIssueStatus(["status:Needs Review"])).toBeNull();
42 expect(extractIssueStatus(["status:review!"])).toBeNull();
43 });
44});