summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/context/layout-scroll.test.ts
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-02-08 05:02:19 -0600
committerGitHub <[email protected]>2026-02-08 05:02:19 -0600
commitd1ebe0767c264d395c8bc504c0957ccc3af90103 (patch)
tree4e10adf10def7a5ec731d1b33a6f21dbe67769f6 /packages/app/src/context/layout-scroll.test.ts
parent19b1222cd85060f7b0999b99586e93f84821b94b (diff)
downloadopencode-d1ebe0767c264d395c8bc504c0957ccc3af90103.tar.gz
opencode-d1ebe0767c264d395c8bc504c0957ccc3af90103.zip
chore: refactoring and tests (#12629)
Diffstat (limited to 'packages/app/src/context/layout-scroll.test.ts')
-rw-r--r--packages/app/src/context/layout-scroll.test.ts60
1 files changed, 34 insertions, 26 deletions
diff --git a/packages/app/src/context/layout-scroll.test.ts b/packages/app/src/context/layout-scroll.test.ts
index c421a58b6..2a13e4020 100644
--- a/packages/app/src/context/layout-scroll.test.ts
+++ b/packages/app/src/context/layout-scroll.test.ts
@@ -1,36 +1,44 @@
-import { describe, expect, test } from "bun:test"
+import { describe, expect, test, vi } from "bun:test"
import { createScrollPersistence } from "./layout-scroll"
describe("createScrollPersistence", () => {
- test("debounces persisted scroll writes", async () => {
- const snapshot = {
- session: {
- review: { x: 0, y: 0 },
- },
- } as Record<string, Record<string, { x: number; y: number }>>
- const writes: Array<Record<string, { x: number; y: number }>> = []
- const scroll = createScrollPersistence({
- debounceMs: 10,
- getSnapshot: (sessionKey) => snapshot[sessionKey],
- onFlush: (sessionKey, next) => {
- snapshot[sessionKey] = next
- writes.push(next)
- },
- })
+ test("debounces persisted scroll writes", () => {
+ vi.useFakeTimers()
+ try {
+ const snapshot = {
+ session: {
+ review: { x: 0, y: 0 },
+ },
+ } as Record<string, Record<string, { x: number; y: number }>>
+ const writes: Array<Record<string, { x: number; y: number }>> = []
+ const scroll = createScrollPersistence({
+ debounceMs: 10,
+ getSnapshot: (sessionKey) => snapshot[sessionKey],
+ onFlush: (sessionKey, next) => {
+ snapshot[sessionKey] = next
+ writes.push(next)
+ },
+ })
- for (const i of Array.from({ length: 30 }, (_, n) => n + 1)) {
- scroll.setScroll("session", "review", { x: 0, y: i })
- }
+ for (const i of Array.from({ length: 30 }, (_, n) => n + 1)) {
+ scroll.setScroll("session", "review", { x: 0, y: i })
+ }
+
+ vi.advanceTimersByTime(9)
+ expect(writes).toHaveLength(0)
- await new Promise((resolve) => setTimeout(resolve, 40))
+ vi.advanceTimersByTime(1)
- expect(writes).toHaveLength(1)
- expect(writes[0]?.review).toEqual({ x: 0, y: 30 })
+ expect(writes).toHaveLength(1)
+ expect(writes[0]?.review).toEqual({ x: 0, y: 30 })
- scroll.setScroll("session", "review", { x: 0, y: 30 })
- await new Promise((resolve) => setTimeout(resolve, 20))
+ scroll.setScroll("session", "review", { x: 0, y: 30 })
+ vi.advanceTimersByTime(20)
- expect(writes).toHaveLength(1)
- scroll.dispose()
+ expect(writes).toHaveLength(1)
+ scroll.dispose()
+ } finally {
+ vi.useRealTimers()
+ }
})
})