42 lines
1.4 KiB
TypeScript
42 lines
1.4 KiB
TypeScript
import test, { describe } from "node:test"
|
|
import assert from "node:assert"
|
|
import { resolveFrame, frameRegistry } from "./index"
|
|
import { DefaultFrame } from "./DefaultFrame"
|
|
import { FullWidthFrame } from "./FullWidthFrame"
|
|
import type { PageFrame } from "./types"
|
|
|
|
const customFrame: PageFrame = {
|
|
name: "custom-test-frame",
|
|
render: () => null as any,
|
|
}
|
|
|
|
describe("resolveFrame", () => {
|
|
test("returns DefaultFrame for undefined", () => {
|
|
assert.strictEqual(resolveFrame(undefined), DefaultFrame)
|
|
})
|
|
|
|
test("returns DefaultFrame for 'default'", () => {
|
|
assert.strictEqual(resolveFrame("default"), DefaultFrame)
|
|
})
|
|
|
|
test("returns named built-in frame", () => {
|
|
assert.strictEqual(resolveFrame("full-width"), FullWidthFrame)
|
|
})
|
|
|
|
test("returns DefaultFrame for unknown frame name", () => {
|
|
assert.strictEqual(resolveFrame("nonexistent"), DefaultFrame)
|
|
})
|
|
|
|
test("plugin-registered frame takes priority", () => {
|
|
frameRegistry.register("custom-test-frame", customFrame, "test-plugin")
|
|
const result = resolveFrame("custom-test-frame")
|
|
assert.strictEqual(result, customFrame)
|
|
})
|
|
|
|
test("returns DefaultFrame for unknown name even with plugin frames registered", () => {
|
|
frameRegistry.register("custom-test-frame", customFrame, "test-plugin")
|
|
const result = resolveFrame("totally-unknown")
|
|
assert.strictEqual(result, DefaultFrame)
|
|
})
|
|
})
|