test.govlab/constants/configuration/constants/word.constants.test.ts
test.govlab/constants/configuration/constants/word.constants.test.ts is a file in Codebase Testing. 39 lines of code and 0 definitions.
import {
AMERICAN_WORDS,
IZE_STEMS,
IZE_SUFFIXES,
PLURAL_IES,
PLURAL_KEPT_AFTER,
PLURAL_MINIMUM_LENGTH,
PLURAL_SUFFIX,
SPELLING_PREFIXES,
} from "@govlab/constants/configuration/constants/word.constants.ts";
import { describe, expect, it } from "vitest";
describe("the plural rules", () => {
it("fold a regular plural and an -ies plural, and keep the endings that are not plurals", () => {
expect(PLURAL_SUFFIX).toBe("s");
expect(PLURAL_IES).toStrictEqual(["ies", "y"]);
expect([...PLURAL_KEPT_AFTER]).toStrictEqual(["i", "s", "u"]);
expect(PLURAL_MINIMUM_LENGTH).toBeGreaterThan(PLURAL_SUFFIX.length);
});
});
describe("the spelling tables", () => {
it("map each British word to a different American one", () => {
for (const [british, american] of Object.entries(AMERICAN_WORDS)) {
expect(american).not.toBe(british);
}
});
it("turn every -ise suffix into its -ize form", () => {
for (const [british, american] of Object.entries(IZE_SUFFIXES)) {
expect(american.replace("z", "s")).toBe(british);
}
});
it("hold each stem once", () => {
expect(new Set(IZE_STEMS).size).toBe(IZE_STEMS.length);
});
it("hold each prefix once, and no prefix is itself a stem or a listed word", () => {
expect(new Set(SPELLING_PREFIXES).size).toBe(SPELLING_PREFIXES.length);
expect(SPELLING_PREFIXES.filter((prefix) => IZE_STEMS.includes(prefix))).toStrictEqual([]);
expect(SPELLING_PREFIXES.filter((prefix) => Object.hasOwn(AMERICAN_WORDS, prefix))).toStrictEqual([]);
});
});