ultisuite-client/lib/drive/docs-graphic-position.test.ts
R3D347HR4Y 303b2b1074
Some checks are pending
E2E / Playwright e2e (push) Waiting to run
wow
2026-06-11 01:22:40 +02:00

67 lines
2.3 KiB
TypeScript

import assert from "node:assert/strict"
import { describe, it } from "node:test"
import {
bboxToPageCoords,
normalizePageCoords,
pageCoordsToStackStyle,
pageIndexFromStackY,
usesPageLayer,
} from "./docs-graphic-position.ts"
import { DOCS_GRAPHIC_DEFAULTS } from "./docs-graphic-types.ts"
import { DOCS_PAGE_GAP_PX } from "./docs-page-layout-constants.ts"
describe("docs-graphic-position", () => {
it("usesPageLayer for fixed and behind/in-front wraps", () => {
assert.equal(
usesPageLayer({ ...DOCS_GRAPHIC_DEFAULTS, positionMode: "fixed-on-page" }),
true
)
assert.equal(
usesPageLayer({ ...DOCS_GRAPHIC_DEFAULTS, wrap: "behind", positionMode: "move-with-text" }),
true
)
assert.equal(
usesPageLayer({ ...DOCS_GRAPHIC_DEFAULTS, wrap: "square", placement: "absolute" }),
false
)
})
it("pageIndexFromStackY handles multi-page stack", () => {
const pageHeight = 1000
assert.equal(pageIndexFromStackY(0, pageHeight), 0)
assert.equal(pageIndexFromStackY(pageHeight + DOCS_PAGE_GAP_PX, pageHeight), 1)
})
it("bboxToPageCoords maps viewport rect to page coords", () => {
const pageHeight = 1000
const stackRect = { left: 100, top: 50, width: 800, height: 3000 } as DOMRect
const graphicRect = { left: 150, top: 120, width: 200, height: 100 } as DOMRect
const coords = bboxToPageCoords(graphicRect, stackRect, 1, pageHeight)
assert.equal(coords.pageIndex, 0)
assert.equal(coords.pageX, 50)
assert.equal(coords.pageY, 70)
})
it("normalizePageCoords re-resolves page index after cross-page drags", () => {
const pageHeight = 1000
const next = normalizePageCoords(0, pageHeight + DOCS_PAGE_GAP_PX + 50, pageHeight)
assert.equal(next.pageIndex, 1)
assert.equal(next.pageY, 50)
const up = normalizePageCoords(1, -200, pageHeight)
assert.equal(up.pageIndex, 0)
assert.equal(up.pageY, Math.min(pageHeight, 800 + DOCS_PAGE_GAP_PX))
const clamped = normalizePageCoords(0, -50, pageHeight)
assert.equal(clamped.pageIndex, 0)
assert.equal(clamped.pageY, 0)
})
it("pageCoordsToStackStyle stacks page offsets", () => {
const pageHeight = 1000
const style = pageCoordsToStackStyle(1, 40, 80, pageHeight)
assert.equal(style.left, 40)
assert.equal(style.top, pageHeight + DOCS_PAGE_GAP_PX + 80)
})
})