fix: Replay controls
This commit is contained in:
@@ -1,14 +1,21 @@
|
||||
import { describe, it, expect } from 'vitest'
|
||||
import { describe, it, expect, vi, afterEach } from 'vitest'
|
||||
import { useReplayControls } from '@/composables/useReplayControls'
|
||||
|
||||
describe('useReplayControls', () => {
|
||||
afterEach(() => {
|
||||
vi.useRealTimers()
|
||||
})
|
||||
|
||||
it('pauseAndResume', () => {
|
||||
const { isPaused, pause, resume } = useReplayControls()
|
||||
expect(isPaused.value).toBe(false)
|
||||
pause()
|
||||
expect(isPaused.value).toBe(true)
|
||||
resume()
|
||||
expect(isPaused.value).toBe(false)
|
||||
const replay = useReplayControls()
|
||||
replay.setScenarioBounds(0, 60_000)
|
||||
replay.syncToEnd()
|
||||
|
||||
expect(replay.isPaused.value).toBe(true)
|
||||
replay.resume()
|
||||
expect(replay.isPaused.value).toBe(false)
|
||||
replay.pause()
|
||||
expect(replay.isPaused.value).toBe(true)
|
||||
})
|
||||
|
||||
it('speedPresets', () => {
|
||||
@@ -19,15 +26,42 @@ describe('useReplayControls', () => {
|
||||
})
|
||||
|
||||
it('progressComputation', () => {
|
||||
const { currentOffsetMinutes, scenarioDurationMinutes, progress } = useReplayControls()
|
||||
scenarioDurationMinutes.value = 100
|
||||
currentOffsetMinutes.value = 50
|
||||
expect(progress.value).toBe(50)
|
||||
const replay = useReplayControls()
|
||||
replay.setScenarioBounds(0, 100 * 60_000)
|
||||
replay.jumpToOffset(50)
|
||||
expect(replay.progress.value).toBe(50)
|
||||
})
|
||||
|
||||
it('jumpToOffset', () => {
|
||||
const { currentOffsetMinutes, jumpToOffset } = useReplayControls()
|
||||
jumpToOffset(42)
|
||||
expect(currentOffsetMinutes.value).toBe(42)
|
||||
const replay = useReplayControls()
|
||||
replay.setScenarioBounds(0, 100 * 60_000)
|
||||
replay.jumpToOffset(42)
|
||||
expect(replay.currentOffsetMinutes.value).toBe(42)
|
||||
})
|
||||
|
||||
it('jumpToTimestamp_clampsWithinScenario', () => {
|
||||
const replay = useReplayControls()
|
||||
const start = new Date('2026-06-19T12:00:00Z').getTime()
|
||||
const end = new Date('2026-06-19T14:00:00Z').getTime()
|
||||
replay.setScenarioBounds(start, end)
|
||||
replay.jumpToTimestamp('2026-06-19T13:00:00Z')
|
||||
expect(replay.currentOffsetMinutes.value).toBe(60)
|
||||
})
|
||||
|
||||
it('isAtOrBefore_filtersByCurrentTime', () => {
|
||||
const replay = useReplayControls()
|
||||
replay.setScenarioBounds(0, 120 * 60_000)
|
||||
replay.jumpToOffset(30)
|
||||
expect(replay.isAtOrBefore(new Date(20 * 60_000).toISOString())).toBe(true)
|
||||
expect(replay.isAtOrBefore(new Date(40 * 60_000).toISOString())).toBe(false)
|
||||
})
|
||||
|
||||
it('instantSpeedJumpsToEnd', () => {
|
||||
const replay = useReplayControls()
|
||||
replay.setScenarioBounds(0, 60_000)
|
||||
replay.jumpToOffset(10)
|
||||
replay.setSpeed(0)
|
||||
expect(replay.progress.value).toBe(100)
|
||||
expect(replay.isPaused.value).toBe(true)
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user