mirror of
https://github.com/Sea-Haven-Industries/shoc-frontend-new.git
synced 2026-09-30 06:53:12 +00:00
41 lines
1.4 KiB
TypeScript
41 lines
1.4 KiB
TypeScript
import { readFileSync } from "node:fs";
|
|
import path from "node:path";
|
|
import { describe, expect, it } from "vitest";
|
|
import { assertAbsoluteApiUrlHasApiSegment } from "./api-url-contract";
|
|
|
|
describe("assertAbsoluteApiUrlHasApiSegment", () => {
|
|
it("allows relative /api", () => {
|
|
expect(() => assertAbsoluteApiUrlHasApiSegment("/api")).not.toThrow();
|
|
});
|
|
|
|
it("allows empty or undefined", () => {
|
|
expect(() => assertAbsoluteApiUrlHasApiSegment(undefined)).not.toThrow();
|
|
expect(() => assertAbsoluteApiUrlHasApiSegment("")).not.toThrow();
|
|
});
|
|
|
|
it("allows absolute URL ending with /api", () => {
|
|
expect(() =>
|
|
assertAbsoluteApiUrlHasApiSegment("https://api.seahavenindustries.com/api"),
|
|
).not.toThrow();
|
|
});
|
|
|
|
it("rejects absolute URL without /api", () => {
|
|
expect(() => assertAbsoluteApiUrlHasApiSegment("https://api.seahavenindustries.com")).toThrow(
|
|
/must end with \/api/,
|
|
);
|
|
});
|
|
});
|
|
|
|
describe(".env.example contract", () => {
|
|
it("documents an absolute VITE_API_URL that includes /api", () => {
|
|
const envExample = readFileSync(path.resolve(process.cwd(), ".env.example"), "utf8");
|
|
const match = envExample.match(/^VITE_API_URL=(.+)$/m);
|
|
|
|
expect(match).not.toBeNull();
|
|
const value = match![1]!.trim();
|
|
|
|
if (value.startsWith("http")) {
|
|
expect(() => assertAbsoluteApiUrlHasApiSegment(value)).not.toThrow();
|
|
}
|
|
});
|
|
});
|