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

56 lines
1.8 KiB
TypeScript

import assert from "node:assert/strict"
import { describe, it } from "node:test"
import {
buildPageSnapLines,
snapMoveRect,
snapResizeRect,
} from "./docs-graphic-snap.ts"
const baseCtx = {
pageWidth: 800,
pageHeight: 1100,
margins: { top: 96, right: 96, bottom: 96, left: 96 },
otherRects: [{ x: 200, y: 300, width: 120, height: 80 }],
}
describe("docs-graphic-snap", () => {
it("includes page edges, center, and margins in snap lines", () => {
const lines = buildPageSnapLines(baseCtx)
assert.ok(lines.x.includes(0))
assert.ok(lines.x.includes(96))
assert.ok(lines.x.includes(400))
assert.ok(lines.x.includes(704))
assert.ok(lines.x.includes(800))
assert.ok(lines.y.includes(96))
assert.ok(lines.y.includes(550))
})
it("snaps move to page center", () => {
const rect = { x: 358, y: 100, width: 80, height: 60 }
const { rect: snapped, guides } = snapMoveRect(rect, baseCtx, 8)
assert.equal(snapped.x, 360)
assert.ok(guides.some((g) => g.axis === "x" && g.position === 400))
})
it("snaps move to another graphic left edge", () => {
const rect = { x: 198, y: 300, width: 50, height: 40 }
const { rect: snapped, guides } = snapMoveRect(rect, baseCtx, 6)
assert.equal(snapped.x, 200)
assert.ok(guides.some((g) => g.axis === "x" && g.position === 200))
})
it("snaps resize east edge to margin", () => {
const rect = { x: 500, y: 200, width: 198, height: 100 }
const { rect: snapped } = snapResizeRect("e", rect, baseCtx, 8)
assert.equal(snapped.width, 204)
assert.equal(snapped.x + snapped.width, 704)
})
it("snaps resize north edge to page top", () => {
const rect = { x: 120, y: 4, width: 80, height: 120 }
const { rect: snapped } = snapResizeRect("n", rect, baseCtx, 8)
assert.equal(snapped.y, 0)
assert.equal(snapped.height, 124)
})
})