Files
frontend-miniapp/tests/unit/GuideModelStateReset.spec.ts
lyf 122013ccfb
Some checks failed
CI / verify (push) Has been cancelled
修复导览楼层默认进入与模型复位状态
2026-07-17 11:54:08 +08:00

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)
})
})