2021-11-24 11:43:18 +01:00

82 lines
2.2 KiB
JavaScript

import { OptionValidator } from "../lib/index.js";
describe("OptionValidator", () => {
describe("validateTopLevelOptions", () => {
let v;
beforeAll(() => {
v = new OptionValidator("test-descriptor");
});
it("should throw when option key is not found", () => {
expect(() =>
v.validateTopLevelOptions(
{ unknown: "options" },
{ foo: "foo" },
"test",
),
).toThrow();
});
it("should throw when option key is an own property but not found", () => {
expect(() =>
v.validateTopLevelOptions(
{ hasOwnProperty: "foo" },
{
foo: "foo",
bar: "bar",
aLongPropertyKeyToSeeLevenPerformance: "a",
},
"test",
),
).toThrow();
});
});
describe("validateBooleanOption", () => {
let v;
beforeAll(() => {
v = new OptionValidator("test-descriptor");
});
it("`undefined` option returns false", () => {
expect(v.validateBooleanOption("test", undefined, false)).toBe(false);
});
it("`false` option returns false", () => {
expect(v.validateBooleanOption("test", false, false)).toBe(false);
});
it("`true` option returns true", () => {
expect(v.validateBooleanOption("test", true, false)).toBe(true);
});
it("array option is invalid", () => {
expect(() => {
v.validateBooleanOption("test", [], false);
}).toThrow();
});
});
describe("validateStringOption", () => {
let v;
beforeAll(() => {
v = new OptionValidator("test-descriptor");
});
it("`undefined` option default", () => {
expect(v.validateStringOption("test", undefined, "default")).toBe(
"default",
);
});
it("`value` option returns value", () => {
expect(v.validateStringOption("test", "value", "default")).toBe("value");
});
it("no default returns undefined", () => {
expect(v.validateStringOption("test", undefined)).toBe(undefined);
});
it("array option is invalid", () => {
expect(() => {
v.validateStringOption("test", [], "default");
}).toThrow();
});
});
});