Files
claude-code/src/assistant/__tests__/index.test.ts
unraid c7e1c50b86 feat: 添加服务层增强与零散改进
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-22 22:38:10 +08:00

60 lines
1.9 KiB
TypeScript

import { afterEach, beforeEach, describe, expect, test } from 'bun:test'
import { readFile, rm } from 'node:fs/promises'
import { tmpdir } from 'node:os'
import { join } from 'node:path'
import {
resetStateForTests,
setCwdState,
setOriginalCwd,
} from '../../bootstrap/state'
import { getTaskListId } from '../../utils/tasks'
import { getTeamFilePath } from '../../utils/swarm/teamHelpers'
import { initializeAssistantTeam } from '../index'
let tempDir = ''
let previousConfigDir: string | undefined
beforeEach(() => {
previousConfigDir = process.env.CLAUDE_CONFIG_DIR
tempDir = join(
tmpdir(),
`assistant-team-${Date.now()}-${Math.random().toString(16).slice(2)}`,
)
process.env.CLAUDE_CONFIG_DIR = join(tempDir, 'config')
resetStateForTests()
setOriginalCwd(tempDir)
setCwdState(tempDir)
})
afterEach(async () => {
resetStateForTests()
if (previousConfigDir === undefined) {
delete process.env.CLAUDE_CONFIG_DIR
} else {
process.env.CLAUDE_CONFIG_DIR = previousConfigDir
}
await rm(tempDir, { recursive: true, force: true })
})
describe('initializeAssistantTeam', () => {
test('creates a session-scoped in-process team context and task list', async () => {
const context = await initializeAssistantTeam()
expect(context).toBeDefined()
const teamContext = context!
expect(teamContext.teamName).toStartWith('assistant-')
expect(teamContext.isLeader).toBe(true)
expect(teamContext.selfAgentName).toBe('team-lead')
expect(
teamContext.teammates[teamContext.leadAgentId]?.tmuxSessionName,
).toBe('in-process')
expect(getTaskListId()).toBe(teamContext.teamName)
const raw = await readFile(getTeamFilePath(teamContext.teamName), 'utf-8')
const teamFile = JSON.parse(raw)
expect(teamFile.leadAgentId).toBe(teamContext.leadAgentId)
expect(teamFile.members[0].backendType).toBe('in-process')
expect(teamFile.members[0].agentType).toBe('assistant')
})
})