79 lines
2.5 KiB
TypeScript
79 lines
2.5 KiB
TypeScript
// @vitest-environment happy-dom
|
|
|
|
import { mount } from '@vue/test-utils'
|
|
import { describe, expect, it, vi } from 'vitest'
|
|
import ExplainHallSelect from '@/components/explain/ExplainHallSelect.vue'
|
|
|
|
vi.mock('@/utils/hostEnvironment', () => ({
|
|
isEmbeddedInWechatMiniProgram: () => false
|
|
}))
|
|
|
|
describe('讲解展厅选择列表', () => {
|
|
it('业务单元卡片不显示业务单元标签,并保留讲解数量和点击事件', async () => {
|
|
const wrapper = mount(ExplainHallSelect, {
|
|
props: {
|
|
stage: 'unit',
|
|
businessUnits: [
|
|
{
|
|
id: 'unit-evolution',
|
|
name: '生命演化',
|
|
hallId: 'hall-evolution',
|
|
guideStopCount: 6
|
|
},
|
|
{
|
|
id: 'unit-dinosaur',
|
|
name: '恐龙世界',
|
|
hallId: 'hall-dinosaur',
|
|
guideStopCount: 4
|
|
}
|
|
]
|
|
}
|
|
})
|
|
|
|
const cards = wrapper.findAll('.unit-card')
|
|
expect(cards).toHaveLength(2)
|
|
expect(wrapper.text()).toContain('生命演化')
|
|
expect(wrapper.text()).toContain('恐龙世界')
|
|
expect(wrapper.text()).toContain('6 个讲解')
|
|
expect(wrapper.text()).toContain('4 个讲解')
|
|
expect(cards.map((card) => card.text()).join('')).not.toContain('业务单元')
|
|
expect(cards[0]?.find('.floor-badge').exists()).toBe(false)
|
|
|
|
await cards[0]?.trigger('tap')
|
|
expect(wrapper.emitted('businessUnitClick')).toEqual([['unit-evolution']])
|
|
})
|
|
|
|
it('READY 讲解点不显示可讲解标签,非 READY 讲解点保留图文标签和点击事件', async () => {
|
|
const readyStop = {
|
|
id: 'stop-ready',
|
|
name: '生命起源',
|
|
hallId: 'hall-evolution',
|
|
audioStatus: 'READY'
|
|
}
|
|
const textStop = {
|
|
id: 'stop-text',
|
|
name: '化石记录',
|
|
hallId: 'hall-evolution',
|
|
audioStatus: 'MISSING'
|
|
}
|
|
const wrapper = mount(ExplainHallSelect, {
|
|
props: {
|
|
stage: 'stop',
|
|
guideStops: [readyStop, textStop]
|
|
}
|
|
})
|
|
|
|
const cards = wrapper.findAll('.stop-card')
|
|
expect(cards).toHaveLength(2)
|
|
expect(wrapper.text()).toContain('生命起源')
|
|
expect(wrapper.text()).toContain('化石记录')
|
|
expect(wrapper.text()).not.toContain('可讲解')
|
|
expect(cards[0]?.find('.hall-meta-row').exists()).toBe(false)
|
|
expect(cards[1]?.find('.floor-badge').text()).toBe('图文')
|
|
|
|
await cards[0]?.trigger('tap')
|
|
await cards[1]?.trigger('tap')
|
|
expect(wrapper.emitted('guideStopClick')).toEqual([[readyStop], [textStop]])
|
|
})
|
|
})
|