diff --git a/test/dependency-kind.test.ts b/test/dependency-kind.test.ts new file mode 100644 index 0000000..30980e2 --- /dev/null +++ b/test/dependency-kind.test.ts @@ -0,0 +1,34 @@ +import { describe, test, expect } from "@jest/globals"; +import DependencyKind from "../src/metadata/dependency-kind"; + +describe("DependencyKind.getValues", () => { + test("all DependencyKind values are returned", () => { + const kinds = DependencyKind.getValues(); + expect(kinds).toHaveLength(6); + expect(kinds).toContain(DependencyKind.Depends); + expect(kinds).toContain(DependencyKind.Recommends); + expect(kinds).toContain(DependencyKind.Includes); + expect(kinds).toContain(DependencyKind.Suggests); + expect(kinds).toContain(DependencyKind.Conflicts); + expect(kinds).toContain(DependencyKind.Breaks); + }); +}); + +describe("DependencyKind.parse", () => { + test("every DependencyKind can be parsed", () => { + for (const kind of DependencyKind.getValues()) { + expect(DependencyKind.parse(DependencyKind.toString(kind))).toStrictEqual(kind); + } + }); + + test("DependencyKind's name is case-insensitive", () => { + for (const kind of DependencyKind.getValues()) { + expect(DependencyKind.parse(DependencyKind.toString(kind).toLowerCase())).toStrictEqual(kind); + expect(DependencyKind.parse(DependencyKind.toString(kind).toUpperCase())).toStrictEqual(kind); + } + }); + + test("undefined is returned when the value cannot be parsed", () => { + expect(DependencyKind.parse("There's no such dependency kind")).toBeUndefined(); + }); +}); \ No newline at end of file