55 lines
1.8 KiB
TypeScript
55 lines
1.8 KiB
TypeScript
import assert from "node:assert/strict";
|
|
import { describe, it } from "node:test";
|
|
import {
|
|
getExternalCsvConfiguration,
|
|
previewExternalCsv,
|
|
updateExternalCsvConfiguration,
|
|
} from "../src/frontend/utils/api.js";
|
|
import { createDefaultExternalCsvConfiguration } from "../src/external-model/csv/external-csv-contracts.js";
|
|
import { externalCsvTestColumns } from "./fixtures/revit-csv-fixtures.js";
|
|
|
|
describe("Revit CSV frontend API", () => {
|
|
it("uses the project-scoped configuration and preview endpoints", async () => {
|
|
const requests: Array<{ url: string; method: string; body: unknown }> = [];
|
|
const originalFetch = globalThis.fetch;
|
|
globalThis.fetch = async (input, init) => {
|
|
requests.push({
|
|
url: String(input),
|
|
method: init?.method ?? "GET",
|
|
body: init?.body ? JSON.parse(String(init.body)) : null,
|
|
});
|
|
return new Response(JSON.stringify({ configuration: null }), {
|
|
status: 200,
|
|
headers: { "Content-Type": "application/json" },
|
|
});
|
|
};
|
|
const configuration = createDefaultExternalCsvConfiguration(externalCsvTestColumns);
|
|
|
|
try {
|
|
await getExternalCsvConfiguration("project-1");
|
|
await updateExternalCsvConfiguration("project-1", 7, configuration);
|
|
await previewExternalCsv("project-1", "revit.csv", "YWJj");
|
|
} finally {
|
|
globalThis.fetch = originalFetch;
|
|
}
|
|
|
|
assert.deepEqual(requests, [
|
|
{
|
|
url: "/api/projects/project-1/external-csv/configuration",
|
|
method: "GET",
|
|
body: null,
|
|
},
|
|
{
|
|
url: "/api/projects/project-1/external-csv/configuration",
|
|
method: "PUT",
|
|
body: { expectedRevision: 7, configuration },
|
|
},
|
|
{
|
|
url: "/api/projects/project-1/external-csv/preview",
|
|
method: "POST",
|
|
body: { fileName: "revit.csv", contentBase64: "YWJj" },
|
|
},
|
|
]);
|
|
});
|
|
});
|