SPB Git
1.6 KB · 24 lines typescript
1import { describe, expect, it } from "vitest";2import { detectWpNumber, makeIdentifier, parseIdentifier, parseVersionLabel } from "@/lib/papers/identifiers";3describe("identifiers", () => {4  it("builds permanent identifiers and slugs", () => {5    expect(makeIdentifier("WP", 7)).toEqual({ seriesCode: "WP", number: 7, identifier: "WP07", slug: "wp7" });6    expect(makeIdentifier("wp", 38).identifier).toBe("WP38");7    expect(makeIdentifier("FIRC", 2)).toEqual({ seriesCode: "FIRC", number: 2, identifier: "FIRC0002", slug: "firc2" });8  });9  it("parses user input leniently", () => {10    for (const s of ["wp38", "WP38", "WP038", "wp-38", "WP_38", "38", " wp 38 "]) expect(parseIdentifier(s)?.slug).toBe("wp38");11    expect(parseIdentifier("firc2")?.identifier).toBe("FIRC0002"); expect(parseIdentifier("FIRC0002")?.slug).toBe("firc2");12    expect(parseIdentifier("hello")).toBeNull(); expect(parseIdentifier("wp0")).toBeNull(); expect(parseIdentifier("")).toBeNull();13  });14  it("parses version labels", () => {15    expect(parseVersionLabel("v2")).toEqual({ versionNo: 2, label: "v2" }); expect(parseVersionLabel("1.1")).toEqual({ versionNo: 1, label: "v1.1" }); expect(parseVersionLabel("x")).toBeNull();16  });17  it("detects working paper numbers on title pages", () => {18    expect(detectWpNumber("UQO Working Paper No. 38\nNovember 2026")).toEqual({ seriesCode: "WP", number: 38 });19    expect(detectWpNumber("Working  Paper   Number 7")).toEqual({ seriesCode: "WP", number: 7 });20    expect(detectWpNumber("FIRC Research Paper No. 0002")).toEqual({ seriesCode: "FIRC", number: 2 });21    expect(detectWpNumber("No working paper here")).toBeNull();22  });23});24
Files · main
Menu

Theme