fix false missing Hermes CLI detection after deployment
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
// @vitest-environment jsdom
|
||||
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
||||
const request = vi.hoisted(() => vi.fn())
|
||||
vi.mock('@/api/client', () => ({ request }))
|
||||
|
||||
beforeEach(() => { vi.resetModules(); request.mockReset() })
|
||||
|
||||
describe('CLI installation guard', () => {
|
||||
it('does not send a slow, installed CLI to the installation page', async () => {
|
||||
request.mockResolvedValue({ available: false, reason: 'timeout' })
|
||||
const api = await import('@/api/hermes/system')
|
||||
expect(await api.checkHermesCliAvailable()).toBe(true)
|
||||
expect(await api.getHermesCliStatus()).toMatchObject({ reason: 'timeout' })
|
||||
expect(request).toHaveBeenCalledOnce()
|
||||
})
|
||||
|
||||
it.each(['missing', 'permission_denied', 'failed'])('retains a genuine %s error and bypasses server cache on retry', async reason => {
|
||||
request.mockResolvedValueOnce({ available: false, reason }).mockResolvedValueOnce({ available: true, reason: 'ready' })
|
||||
const api = await import('@/api/hermes/system')
|
||||
expect(await api.checkHermesCliAvailable()).toBe(false)
|
||||
api.resetHermesCliProbe()
|
||||
expect(await api.checkHermesCliAvailable()).toBe(true)
|
||||
expect(request).toHaveBeenLastCalledWith('/api/hermes/cli-status?refresh=1')
|
||||
})
|
||||
|
||||
it('continues to work with older servers and transport errors', async () => {
|
||||
const api = await import('@/api/hermes/system')
|
||||
request.mockResolvedValueOnce({ available: false })
|
||||
expect(await api.checkHermesCliAvailable()).toBe(false)
|
||||
api.resetHermesCliProbe()
|
||||
request.mockRejectedValueOnce(new Error('server restarting'))
|
||||
expect(await api.checkHermesCliAvailable()).toBe(true)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user