返回 oh-my-ppt
agent-manager.test.ts
根目录 / tests / unit / agent-runtime / agent-manager.test.ts
1 import { describe, expect, it, vi } from 'vitest'
2
3 const logMocks = vi.hoisted(() => ({
4 info: vi.fn(),
5 warn: vi.fn()
6 }))
7
8 vi.mock('electron-log/main.js', () => ({ default: logMocks }))
9
10 import { AgentManager } from '../../../src/main/agent-runtime/agent/manager'
11
12 describe('AgentManager', () => {
13 it('keeps session and agent cache ownership without owning run cancellation', () => {
14 const manager = new AgentManager()
15 const entry = manager.ensureSession({
16 sessionId: 'session-1',
17 provider: 'openai',
18 model: 'gpt-test',
19 projectDir: '/tmp/session-1'
20 })
21 const pageAgent = { stream: vi.fn() }
22
23 manager.setPageAgent('session-1', 'page-1', pageAgent)
24 expect(entry.pageAgents.get('page-1')).toBe(pageAgent)
25
26 manager.clearCachedAgents('session-1')
27 expect(entry.pageAgents.size).toBe(0)
28 expect(entry.agent).toBeNull()
29
30 manager.removeSession('session-1')
31 expect(manager.getSession('session-1')).toBeUndefined()
32 })
33
34 it('creates an in-memory cache entry without a database dependency', () => {
35 const manager = new AgentManager()
36
37 const entry = manager.ensureSession({
38 sessionId: 'session-2',
39 provider: 'anthropic',
40 model: ' claude-test ',
41 projectDir: '/tmp/session-2'
42 })
43
44 expect(entry).toMatchObject({
45 provider: 'anthropic',
46 model: 'claude-test',
47 projectDir: '/tmp/session-2'
48 })
49 })
50 })
51
51 lines TYPESCRIPT