diff --git a/src/pages/exhibit/detail.vue b/src/pages/exhibit/detail.vue index 07341f0..e65e01b 100644 --- a/src/pages/exhibit/detail.vue +++ b/src/pages/exhibit/detail.vue @@ -106,9 +106,6 @@ {{ detailLoadingMessage }} - - {{ audioAvailabilityMessage }} - diff --git a/tests/unit/ExhibitDetailAudioFirst.spec.ts b/tests/unit/ExhibitDetailAudioFirst.spec.ts index 60f40db..fe45994 100644 --- a/tests/unit/ExhibitDetailAudioFirst.spec.ts +++ b/tests/unit/ExhibitDetailAudioFirst.spec.ts @@ -144,4 +144,26 @@ describe('讲解详情音频优先布局', () => { language: 'en-US' }), expect.objectContaining({ displayMode: 'mini' })) }) + + it('音频不可用时只在音频控制区显示一次提示', async () => { + mocks.enterExplainDetail.mockResolvedValue({ + ...exhibit, + audioUrl: undefined, + audioDuration: undefined, + audioStatus: 'MISSING', + audioLanguage: 'yue-HK', + audioUnavailableReason: '当前语言暂无语音讲解。' + }) + + const wrapper = mount(ExhibitDetail, { + global: { stubs: { GuidePageFrame: GuidePageFrameStub } } + }) + + await mocks.onLoadHandler?.({ id: exhibit.id, lang: 'yue-HK', targetType: 'STOP', targetId: 'stop-1' }) + await flushPromises() + + expect(wrapper.find('.detail-audio-unavailable').text()).toBe('当前语言暂无语音讲解。') + expect(wrapper.find('.audio-status-hint').exists()).toBe(false) + expect(wrapper.findAll('.section-hint')).toHaveLength(0) + }) })