motion-spring.test.ts 703 B

1234567891011121314151617181920
  1. import { expect, test } from "bun:test"
  2. import { useSpring } from "@opencode-ai/ui/motion-spring"
  3. import { createRoot, createSignal } from "solid-js"
  4. test("snaps spring progress when the session changes", async () => {
  5. const state = createRoot((dispose) => {
  6. const [target, setTarget] = createSignal(0)
  7. const [session, setSession] = createSignal("session-a")
  8. const progress = useSpring(target, { visualDuration: 0.3, bounce: 0 }, session)
  9. return { dispose, progress, setTarget, setSession }
  10. })
  11. await new Promise<void>(queueMicrotask)
  12. state.setTarget(1)
  13. expect(state.progress()).toBe(0)
  14. state.setSession("session-b")
  15. expect(state.progress()).toBe(1)
  16. state.dispose()
  17. })