test.social/core/loaders/card.loader.test.ts
test.social/core/loaders/card.loader.test.ts is a file in Codebase Testing. 76 lines of code and 0 definitions.
import {
ANATOMY_CARD,
ARCHITECTURE_CARD,
FAQ_CARD,
GRAMMAR_CARD,
HOME_CARD,
INFORMATION_CARD,
LICENSE_CARD,
METHODOLOGY_CARD,
ONTOLOGY_CARD,
PRIVACY_CARD,
SEARCH_CARD,
TERMS_CARD,
} from "@banes-lab/social-share/core/ids/card.ids.ts";
import { CARD_PLUGINS, cardPages, loadCards } from "@banes-lab/social-share/core/loaders/card.loader.ts";
import { HOME_PAGE, INFORMATION_PAGE, SEARCH_PAGE } from "@banes-lab/web/core/ids/page.ids.ts";
import { SITE_BYLINE, SITE_HOST, SITE_MARKS } from "@banes-lab/social-share/configuration/data/site.data.ts";
import { describe, expect, it } from "vitest";
import {
getCard,
listCards,
registerCard,
repeatedCards,
} from "@banes-lab/social-share/core/registries/card.registry.ts";
import { HOME_ACCENT } from "@banes-lab/web/configuration/constants/page.constants.ts";
import { SITE_NAME } from "@banes-lab/web/configuration/strings/page.strings.ts";
import { registeredPages } from "@banes-lab/web/domain/registries/page.registry.ts";
const CARD_IDS = [
HOME_CARD,
GRAMMAR_CARD,
METHODOLOGY_CARD,
ARCHITECTURE_CARD,
ONTOLOGY_CARD,
ANATOMY_CARD,
FAQ_CARD,
LICENSE_CARD,
INFORMATION_CARD,
TERMS_CARD,
PRIVACY_CARD,
SEARCH_CARD,
];
describe("loadCards", () => {
it("discovers every card folder's plugin, registers its card and hands over the site's pages and marks", () => {
const loaded = loadCards();
expect(CARD_PLUGINS).toHaveLength(CARD_IDS.length);
expect(loaded.plugins).toBe(CARD_PLUGINS);
expect(loaded.cards.map((card) => card.id).toSorted()).toStrictEqual(CARD_IDS.toSorted());
expect(loaded.repeated).toStrictEqual([]);
expect(loaded.brand).toStrictEqual([SITE_NAME, SITE_BYLINE]);
expect(SITE_MARKS).toStrictEqual(loaded.brand);
});
});
describe("cardPages", () => {
it("reads every registered page, unlisted ones included, with its accent, icon and share copy", () => {
const pages = cardPages();
expect(pages.map((page) => page.id)).toStrictEqual(registeredPages().map((page) => page.id));
expect(pages.map((page) => page.id)).toEqual(expect.arrayContaining([INFORMATION_PAGE, SEARCH_PAGE]));
const home = pages.find((page) => page.id === HOME_PAGE);
expect(home?.accent).toBe(HOME_ACCENT);
expect(home?.headline).toBe(SITE_NAME);
expect(home?.address).toBe(SITE_HOST);
expect(pages.find((page) => page.id === SEARCH_PAGE)?.address).toBe(`${SITE_HOST}/${SEARCH_PAGE}`);
expect(home?.tagline.length).toBeGreaterThan(0);
});
});
describe("the card registry", () => {
it("records a second registration of one id as repeated", () => {
const home = getCard(HOME_CARD);
expect(home).toBeDefined();
if (home !== undefined) {
registerCard(home.spec, home.origin);
}
expect(repeatedCards()).toStrictEqual([HOME_CARD]);
expect(listCards()).toHaveLength(CARD_IDS.length);
});
});