35 lines
1.6 KiB
TypeScript
35 lines
1.6 KiB
TypeScript
import { beforeEach, describe, expect, it } from 'vitest'
|
|
import { useGuideModelState } from '@/composables/useGuideModelState'
|
|
|
|
describe('guide model floor baseline reset queue', () => {
|
|
beforeEach(() => {
|
|
const state = useGuideModelState()
|
|
state.invalidatePendingRequests()
|
|
const pending = state.consumePendingViewBaselineReset()
|
|
if (pending) state.completeViewBaselineReset(pending)
|
|
})
|
|
|
|
it('keeps only the latest pre-ready reset and consumes it once', () => {
|
|
const state = useGuideModelState()
|
|
const first = state.beginViewBaselineReset({ floorId: 'L1', rendererReason: 'poi-detail-close' })
|
|
expect(state.queueViewBaselineReset(first)).toBe(true)
|
|
const second = state.beginViewBaselineReset({ floorId: 'L2', rendererReason: 'floor-reset' })
|
|
expect(state.queueViewBaselineReset(second)).toBe(true)
|
|
|
|
expect(state.consumePendingViewBaselineReset()).toEqual(second)
|
|
expect(state.consumePendingViewBaselineReset()).toBeNull()
|
|
})
|
|
|
|
it('does not let an obsolete reset queue or commit after a newer request', () => {
|
|
const state = useGuideModelState()
|
|
const obsolete = state.beginViewBaselineReset({ floorId: 'L1', rendererReason: 'poi-detail-close' })
|
|
const latest = state.beginViewBaselineReset({ floorId: 'L2', rendererReason: 'floor-reset' })
|
|
|
|
expect(state.isCurrentRequest(obsolete.requestId)).toBe(false)
|
|
expect(state.queueViewBaselineReset(obsolete)).toBe(false)
|
|
expect(state.completeViewBaselineReset(obsolete)).toBe(false)
|
|
expect(state.queueViewBaselineReset(latest)).toBe(true)
|
|
expect(state.consumePendingViewBaselineReset()).toEqual(latest)
|
|
})
|
|
})
|