42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import { test, expect } from "@playwright/test"
|
|
import {
|
|
colorForGuestId,
|
|
generateGuestDisplayName,
|
|
isReadableCursorColor,
|
|
} from "../lib/drive/guest-editor-identity"
|
|
import {
|
|
isRichTextFile,
|
|
sidecarPathForSource,
|
|
} from "../lib/drive/richtext-formats"
|
|
|
|
test.describe("rich text editor helpers", () => {
|
|
test("guest display name uses adjective and animal", () => {
|
|
const name = generateGuestDisplayName()
|
|
const parts = name.split(" ")
|
|
expect(parts.length).toBe(2)
|
|
expect(parts[0]?.length).toBeGreaterThan(0)
|
|
expect(parts[1]?.length).toBeGreaterThan(0)
|
|
})
|
|
|
|
test("guest color is stable for same id", () => {
|
|
const a = colorForGuestId("guest-abc")
|
|
const b = colorForGuestId("guest-abc")
|
|
expect(a).toBe(b)
|
|
})
|
|
|
|
test("cursor colors are readable with white label text", () => {
|
|
for (let i = 0; i < 20; i++) {
|
|
expect(isReadableCursorColor(colorForGuestId(`guest-${i}`))).toBe(true)
|
|
}
|
|
})
|
|
|
|
test("word formats route to rich text", () => {
|
|
expect(isRichTextFile({ name: "rapport.docx" })).toBe(true)
|
|
expect(isRichTextFile({ name: "budget.xlsx" })).toBe(false)
|
|
})
|
|
|
|
test("sidecar path preserves folder and basename", () => {
|
|
expect(sidecarPathForSource("/docs/rapport.docx")).toBe("/docs/rapport.ultidoc.json")
|
|
})
|
|
})
|