41 lines
1.3 KiB
TypeScript
41 lines
1.3 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import {
|
|
getAllSourceCodes,
|
|
getDefaultFetchUrl,
|
|
} from "../adapters/bestiary-index-adapter.js";
|
|
|
|
describe("getAllSourceCodes", () => {
|
|
it("returns all keys from the index sources object", () => {
|
|
const codes = getAllSourceCodes();
|
|
expect(codes.length).toBeGreaterThan(0);
|
|
expect(Array.isArray(codes)).toBe(true);
|
|
for (const code of codes) {
|
|
expect(typeof code).toBe("string");
|
|
}
|
|
});
|
|
});
|
|
|
|
describe("getDefaultFetchUrl", () => {
|
|
it("returns the default URL when no baseUrl is provided", () => {
|
|
const url = getDefaultFetchUrl("XMM");
|
|
expect(url).toBe(
|
|
"https://raw.githubusercontent.com/5etools-mirror-3/5etools-src/main/data/bestiary/bestiary-xmm.json",
|
|
);
|
|
});
|
|
|
|
it("constructs URL from baseUrl with trailing slash", () => {
|
|
const url = getDefaultFetchUrl("PHB", "https://example.com/data/");
|
|
expect(url).toBe("https://example.com/data/bestiary-phb.json");
|
|
});
|
|
|
|
it("normalizes baseUrl without trailing slash", () => {
|
|
const url = getDefaultFetchUrl("PHB", "https://example.com/data");
|
|
expect(url).toBe("https://example.com/data/bestiary-phb.json");
|
|
});
|
|
|
|
it("lowercases the source code in the filename", () => {
|
|
const url = getDefaultFetchUrl("MM", "https://example.com/");
|
|
expect(url).toBe("https://example.com/bestiary-mm.json");
|
|
});
|
|
});
|