修复前端调试与基础交互问题

This commit is contained in:
MMEXA
2026-07-04 05:24:40 +08:00
parent b86d4e1f0c
commit 242081433e
33 changed files with 525 additions and 320 deletions
@@ -12,6 +12,7 @@ describe('useSiteInfo', () => {
beforeEach(() => {
vi.resetModules()
apiClientMocks.get.mockReset()
document.title = ''
})
it('loads public site info', async () => {
@@ -23,10 +24,57 @@ describe('useSiteInfo', () => {
})
const { useSiteInfo } = await import('../useSiteInfo')
const { siteName, siteSubtitle, refreshSiteInfo } = useSiteInfo()
const { siteName, siteSubtitle, siteInfoLoaded, refreshSiteInfo } = useSiteInfo()
await refreshSiteInfo()
expect(siteName.value).toBe('Custom Aether')
expect(siteSubtitle.value).toBe('Gateway')
expect(siteInfoLoaded.value).toBe(true)
expect(document.title).toBe('Custom Aether')
})
it('keeps default site text hidden until public site info resolves', async () => {
let resolveRequest: (value: { data: { site_name: string; site_subtitle: string } }) => void = () => {}
apiClientMocks.get.mockReturnValue(new Promise((resolve) => {
resolveRequest = resolve
}))
const { useSiteInfo } = await import('../useSiteInfo')
const { siteName, siteSubtitle, siteInfoLoaded } = useSiteInfo()
expect(siteName.value).toBe('')
expect(siteSubtitle.value).toBe('')
expect(siteInfoLoaded.value).toBe(false)
expect(document.title).toBe('')
resolveRequest({
data: {
site_name: 'Configured Aether',
site_subtitle: 'Configured Gateway',
},
})
await new Promise(resolve => setTimeout(resolve, 0))
expect(siteName.value).toBe('Configured Aether')
expect(siteSubtitle.value).toBe('Configured Gateway')
expect(siteInfoLoaded.value).toBe(true)
expect(document.title).toBe('Configured Aether')
})
it('uses upstream defaults only after public site info fails', async () => {
apiClientMocks.get.mockRejectedValue(new Error('network unavailable'))
const { useSiteInfo } = await import('../useSiteInfo')
const { siteName, siteSubtitle, siteInfoLoaded, refreshSiteInfo } = useSiteInfo()
expect(siteName.value).toBe('')
expect(siteSubtitle.value).toBe('')
await refreshSiteInfo()
expect(siteName.value).toBe('Aether')
expect(siteSubtitle.value).toBe('AI Gateway')
expect(siteInfoLoaded.value).toBe(true)
expect(document.title).toBe('Aether')
})
})