Files
frontend-miniapp/tests/unit/ArrivalPanel.spec.ts
lyf 140f13633e
Some checks failed
CI / verify (push) Has been cancelled
改造 H5 第三方地图导航
2026-07-13 16:56:18 +08:00

91 lines
3.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// @vitest-environment happy-dom
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
import { mount } from '@vue/test-utils'
import ArrivalPanel from '@/components/navigation/ArrivalPanel.vue'
import { ARRIVAL_TARGETS } from '@/data/arrivalSearchTargets'
const selectedTarget = ARRIVAL_TARGETS[0]
const defaultUserAgent = window.navigator.userAgent
const mountArrivalPanel = () => mount(ArrivalPanel, {
props: {
visible: true,
activeType: 'bus',
targets: [selectedTarget],
selectedTargetId: selectedTarget.id,
selectedTarget
}
})
beforeEach(() => {
window.history.replaceState({}, '', '/#/pages/index/index?tab=guide')
Object.defineProperty(window.navigator, 'userAgent', {
configurable: true,
value: 'Mozilla/5.0 MicroMessenger/8.0.50 miniProgram'
})
Object.assign(window, {
__wxjs_environment: 'miniprogram',
wx: {
miniProgram: {
navigateTo: vi.fn()
}
}
})
vi.stubGlobal('uni', {
showToast: vi.fn(),
showActionSheet: vi.fn()
})
})
afterEach(() => {
Object.defineProperty(window.navigator, 'userAgent', {
configurable: true,
value: defaultUserAgent
})
delete (window as Window & { __wxjs_environment?: string }).__wxjs_environment
delete (window as Window & { wx?: unknown }).wx
vi.unstubAllGlobals()
})
describe('来馆面板 H5 实际渲染', () => {
it('主按钮显示第三方导航,点击后弹出百度和高德选择框', async () => {
const wrapper = mountArrivalPanel()
const showActionSheet = (uni as unknown as {
showActionSheet: ReturnType<typeof vi.fn>
}).showActionSheet
const navigateTo = (
window as Window & {
wx?: { miniProgram?: { navigateTo?: ReturnType<typeof vi.fn> } }
}
).wx?.miniProgram?.navigateTo
expect(wrapper.get('.arrival-primary-text').text()).toBe('第三方导航')
expect(wrapper.text()).not.toContain('打开地图导航')
await wrapper.get('.arrival-primary').trigger('tap')
expect(showActionSheet).toHaveBeenCalledWith(expect.objectContaining({
itemList: ['百度地图', '高德地图']
}))
expect(wrapper.find('.provider-sheet').exists()).toBe(false)
expect(navigateTo).not.toHaveBeenCalled()
})
it('诊断信息默认隐藏,仅在 debug-build=1 时显示 H5 构建边界', () => {
const normalWrapper = mountArrivalPanel()
expect(normalWrapper.find('[data-testid="arrival-build-diagnostics"]').exists()).toBe(false)
normalWrapper.unmount()
window.location.hash = '#/pages/index/index?tab=guide&debug-build=1'
const debugWrapper = mountArrivalPanel()
const diagnostics = debugWrapper.get('[data-testid="arrival-build-diagnostics"]')
expect(diagnostics.text()).toContain('构建 IDtest-build')
expect(diagnostics.text()).toContain('Git committest-commit')
expect(diagnostics.text()).toContain('构建平台h5')
expect(diagnostics.text()).toContain('navigationModethird-party-providers')
expect(diagnostics.text()).toContain('location.href')
expect(diagnostics.text()).toContain('UA')
})
})