Import AITURK IDE 1.0.0-beta.1 from Hermes 63279301; preserve MIT license
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
import { act, cleanup, renderHook } from '@testing-library/react'
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
||||
|
||||
import { $changeEventsAvailable, $cronChangeTick, $sessionsChangeTick } from '@/store/live-sync'
|
||||
import { $activeSessionId } from '@/store/session'
|
||||
|
||||
import { useBackgroundSync } from './use-background-sync'
|
||||
|
||||
const noop = () => undefined
|
||||
const requestGateway = async () => ({ sessions: [] })
|
||||
|
||||
function render(activeGatewayProfile: string, activeConnectionId: string, refreshSessions: () => Promise<void>) {
|
||||
return renderHook(
|
||||
({ connectionId, profile }: { connectionId: string; profile: string }) => {
|
||||
useBackgroundSync({
|
||||
activeConnectionId: connectionId,
|
||||
activeGatewayProfile: profile,
|
||||
activeIsMessaging: false,
|
||||
activeSessionId: null,
|
||||
activeStoredSessionId: null,
|
||||
freshDraftReady: false,
|
||||
gatewayState: 'open',
|
||||
refreshActiveTranscript: noop,
|
||||
refreshCronJobs: noop,
|
||||
refreshCurrentModel: noop,
|
||||
refreshHermesConfig: noop,
|
||||
refreshMessagingSessions: noop,
|
||||
refreshSessions,
|
||||
requestGateway
|
||||
})
|
||||
},
|
||||
{ initialProps: { connectionId: activeConnectionId, profile: activeGatewayProfile } }
|
||||
)
|
||||
}
|
||||
|
||||
describe('useBackgroundSync profile-scoped session refresh', () => {
|
||||
beforeEach(() => {
|
||||
vi.useFakeTimers()
|
||||
$activeSessionId.set(null)
|
||||
$changeEventsAvailable.set(false)
|
||||
$cronChangeTick.set(0)
|
||||
$sessionsChangeTick.set(0)
|
||||
})
|
||||
|
||||
afterEach(() => {
|
||||
cleanup()
|
||||
vi.useRealTimers()
|
||||
})
|
||||
|
||||
it('refreshes the session list after the active gateway profile changes', async () => {
|
||||
const refreshSessions = vi.fn(async () => undefined)
|
||||
const hook = render('default', 'local', refreshSessions)
|
||||
|
||||
await act(async () => undefined)
|
||||
expect(refreshSessions).toHaveBeenCalledTimes(1)
|
||||
refreshSessions.mockClear()
|
||||
|
||||
hook.rerender({ connectionId: 'local', profile: 'nova' })
|
||||
|
||||
await act(async () => undefined)
|
||||
expect(refreshSessions).toHaveBeenCalledTimes(1)
|
||||
})
|
||||
|
||||
it('refreshes the session list when the backend changes but the profile name does not', async () => {
|
||||
const refreshSessions = vi.fn(async () => undefined)
|
||||
const hook = render('default', 'work', refreshSessions)
|
||||
|
||||
await act(async () => undefined)
|
||||
refreshSessions.mockClear()
|
||||
|
||||
hook.rerender({ connectionId: 'homelab', profile: 'default' })
|
||||
|
||||
await act(async () => undefined)
|
||||
expect(refreshSessions).toHaveBeenCalledTimes(1)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user