Initial REM planning editor
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
import assert from "node:assert/strict";
|
||||
import { mkdtemp, rm } from "node:fs/promises";
|
||||
import { tmpdir } from "node:os";
|
||||
import { join } from "node:path";
|
||||
import test from "node:test";
|
||||
import { createMapServer } from "./server.mjs";
|
||||
|
||||
test("server stores and returns the editable map JSON", async () => {
|
||||
const dataDir = await mkdtemp(join(tmpdir(), "star-map-"));
|
||||
const server = createMapServer({ dataDir });
|
||||
|
||||
await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve));
|
||||
const { port } = server.address();
|
||||
const baseUrl = `http://127.0.0.1:${port}`;
|
||||
|
||||
try {
|
||||
const payload = {
|
||||
background: "#101010",
|
||||
systems: [{ id: "alpha", name: "Alpha", x: 10, y: 20, note: "saved" }],
|
||||
connections: []
|
||||
};
|
||||
|
||||
const saveResponse = await fetch(`${baseUrl}/api/map`, {
|
||||
method: "PUT",
|
||||
headers: { "content-type": "application/json" },
|
||||
body: JSON.stringify(payload)
|
||||
});
|
||||
|
||||
assert.equal(saveResponse.status, 200);
|
||||
assert.deepEqual(await saveResponse.json(), { ok: true });
|
||||
|
||||
const loadResponse = await fetch(`${baseUrl}/api/map`);
|
||||
assert.equal(loadResponse.status, 200);
|
||||
assert.deepEqual(await loadResponse.json(), payload);
|
||||
} finally {
|
||||
await new Promise((resolve) => server.close(resolve));
|
||||
await rm(dataDir, { recursive: true, force: true });
|
||||
}
|
||||
});
|
||||
|
||||
test("server rejects invalid map payloads", async () => {
|
||||
const dataDir = await mkdtemp(join(tmpdir(), "star-map-"));
|
||||
const server = createMapServer({ dataDir });
|
||||
|
||||
await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve));
|
||||
const { port } = server.address();
|
||||
|
||||
try {
|
||||
const response = await fetch(`http://127.0.0.1:${port}/api/map`, {
|
||||
method: "PUT",
|
||||
headers: { "content-type": "application/json" },
|
||||
body: JSON.stringify({ systems: "bad", connections: [] })
|
||||
});
|
||||
|
||||
assert.equal(response.status, 400);
|
||||
} finally {
|
||||
await new Promise((resolve) => server.close(resolve));
|
||||
await rm(dataDir, { recursive: true, force: true });
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user