Files
frontend-miniapp/tests/unit/RoutePlannerPanel.spec.ts
lyf 0380a4f875
Some checks failed
CI / verify (push) Has been cancelled
修复地图起点确认弹窗闪退
2026-07-28 20:16:28 +08:00

70 lines
2.2 KiB
TypeScript

// @vitest-environment happy-dom
import { describe, expect, it } from 'vitest'
import { mount } from '@vue/test-utils'
import RoutePlannerPanel from '@/components/navigation/RoutePlannerPanel.vue'
const point = (name: string, floorLabel: string) => ({
poiId: name,
name,
floorId: floorLabel,
floorLabel,
positionGltf: [0, 0, 0] as [number, number, number]
})
describe('RoutePlannerPanel', () => {
it('忽略打开确认层的同一次点击,再响应后续确认或取消操作', async () => {
const wrapper = mount(RoutePlannerPanel, {
props: {
startCandidate: point('服务台', '1F')
}
})
await wrapper.get('.route-confirm-mask').trigger('tap')
await wrapper.get('.route-confirm-action.primary').trigger('tap')
expect(wrapper.emitted('cancelStart')).toBeUndefined()
expect(wrapper.emitted('confirmStart')).toBeUndefined()
await new Promise<void>((resolve) => window.setTimeout(resolve, 350))
await wrapper.get('.route-confirm-action.primary').trigger('tap')
expect(wrapper.emitted('confirmStart')).toEqual([[expect.objectContaining({ poiId: '服务台' })]])
})
it('在导航副标题中显示起点和终点楼层', () => {
const wrapper = mount(RoutePlannerPanel, {
props: {
startPoint: point('办公室', '5F'),
endPoint: point('秦匠', 'B2'),
hasRoutePreview: true,
summary: '跨 2 层 · 约 104 米'
}
})
expect(wrapper.get('.route-panel-subtitle').text()).toBe('从 5F 办公室 前往 B2 秦匠')
})
it('导航信息不显示点位内部楼层和设备编号', () => {
const previewWrapper = mount(RoutePlannerPanel, {
props: {
startPoint: point('L1_K电梯', '1F'),
endPoint: point('L2_导览屏_02', '2F'),
hasRoutePreview: true,
summary: '跨 1 层'
}
})
expect(previewWrapper.get('.route-panel-subtitle').text()).toBe('从 1F 电梯 前往 2F 导览屏')
const pickerWrapper = mount(RoutePlannerPanel, {
props: {
startPoint: point('L1_K电梯', '1F'),
endPoint: point('L2_导览屏_02', '2F'),
hasRoutePreview: false,
summary: ''
}
})
expect(pickerWrapper.get('.route-point-name').text()).toBe('电梯')
})
})