38 lines
943 B
TypeScript
38 lines
943 B
TypeScript
import { describe, expect, test } from "bun:test";
|
|
import {
|
|
HttpError,
|
|
MAX_SCENE_BYTES,
|
|
emptyScene,
|
|
normalizeScene,
|
|
parseJsonBody,
|
|
} from "./scene";
|
|
|
|
describe("scene helpers", () => {
|
|
test("creates empty scenes with dark theme by default", () => {
|
|
const scene = emptyScene();
|
|
|
|
expect(scene.appState.theme).toBe("dark");
|
|
});
|
|
|
|
test("normalizes volatile app state fields", () => {
|
|
const scene = normalizeScene({
|
|
elements: [],
|
|
appState: {
|
|
selectedElementIds: { one: true },
|
|
viewModeEnabled: false,
|
|
},
|
|
files: {},
|
|
});
|
|
|
|
expect(scene.appState.selectedElementIds).toBeUndefined();
|
|
expect(scene.appState.viewModeEnabled).toBe(false);
|
|
});
|
|
|
|
test("rejects oversized payloads", () => {
|
|
const text = "x".repeat(MAX_SCENE_BYTES + 1);
|
|
|
|
expect(() => parseJsonBody(text)).toThrow(HttpError);
|
|
expect(() => parseJsonBody(text)).toThrow("Payload too large");
|
|
});
|
|
});
|