Files
jrshikoku/tests/jrDataSystemEnvironment.test.ts
T

83 lines
2.6 KiB
TypeScript

import { strict as assert } from "node:assert";
import { test } from "node:test";
import {
BACKEND_API_BASE_URLS,
getBackendApiBaseUrl,
getDiagramTodayUrl,
getOfficialPositionResolverConfig,
getOfficialPositionSource,
normalizeJrDataSystemEnvironment,
resolveJrDataSystemEnvironment,
rewriteBackendApiUrl,
rewriteJrDataSystemUrl,
} from "../lib/jrDataSystemEnvironment";
test("legacy environment keys normalize without inventing new environments", () => {
assert.equal(normalizeJrDataSystemEnvironment("production"), "production_release");
assert.equal(normalizeJrDataSystemEnvironment("chatgpt"), "production_beta");
assert.equal(normalizeJrDataSystemEnvironment("claude"), "production_beta");
assert.equal(normalizeJrDataSystemEnvironment("unknown"), "production_release");
});
test("track and UI choices resolve to the three supported environments", () => {
assert.equal(
resolveJrDataSystemEnvironment("production", "release"),
"production_release",
);
assert.equal(
resolveJrDataSystemEnvironment("production", "beta"),
"production_beta",
);
assert.equal(
resolveJrDataSystemEnvironment("experimental", "beta"),
"experimental",
);
});
test("experimental environment changes both backend and diagram endpoints", () => {
assert.equal(
getBackendApiBaseUrl("experimental"),
BACKEND_API_BASE_URLS.experimental,
);
assert.match(getDiagramTodayUrl("experimental"), /diagram-today-beta\.json$/);
assert.match(
getDiagramTodayUrl("production_release"),
/diagram-today\.json$/,
);
});
test("only experimental selects the beta OfficialPosition source", () => {
assert.equal(getOfficialPositionSource("experimental"), "backend");
assert.equal(getOfficialPositionSource("production_release"), "legacy-n8n");
assert.equal(getOfficialPositionSource("production_beta"), "legacy-n8n");
assert.equal(
getOfficialPositionResolverConfig("experimental").backendApiBaseUrl,
BACKEND_API_BASE_URLS.experimental,
);
assert.equal(
getOfficialPositionResolverConfig("production_release").officialPositionEditEnabled,
false,
);
});
test("URL rewriting only changes known JR data-system origins", () => {
assert.equal(
rewriteBackendApiUrl(
`${BACKEND_API_BASE_URLS.production}/train-data`,
"experimental",
),
`${BACKEND_API_BASE_URLS.experimental}/train-data`,
);
assert.equal(
rewriteJrDataSystemUrl(
"https://shikoku-railinfo.haruk.in/path?q=1",
"production_beta",
),
"https://nightly.shikoku-railinfo.haruk.in/path?q=1",
);
assert.equal(
rewriteJrDataSystemUrl("https://example.com/path", "experimental"),
"https://example.com/path",
);
});