agent-ecosystem/test/renderer/components/team/dialogs/teamRelaunchFlow.test.ts

104 lines
2.8 KiB
TypeScript

import { describe, expect, it, vi } from 'vitest';
import { executeTeamRelaunch } from '@renderer/components/team/dialogs/teamRelaunchFlow';
describe('executeTeamRelaunch', () => {
it('runs stop, replaceMembers, then launch when the team is alive', async () => {
const calls: string[] = [];
const stopTeam = vi.fn(async () => {
calls.push('stop');
});
const replaceMembers = vi.fn(async () => {
calls.push('replace');
});
const launchTeam = vi.fn(async () => {
calls.push('launch');
});
await executeTeamRelaunch({
teamName: 'team-alpha',
isTeamAlive: true,
request: {
teamName: 'team-alpha',
cwd: '/tmp/project',
},
members: [{ name: 'alice', role: 'Reviewer' }],
stopTeam,
replaceMembers,
launchTeam,
});
expect(calls).toEqual(['stop', 'replace', 'launch']);
expect(stopTeam).toHaveBeenCalledWith('team-alpha');
expect(replaceMembers).toHaveBeenCalledWith('team-alpha', {
members: [{ name: 'alice', role: 'Reviewer' }],
});
});
it('skips stop when the team is already offline', async () => {
const calls: string[] = [];
const stopTeam = vi.fn(async () => {
calls.push('stop');
});
const replaceMembers = vi.fn(async () => {
calls.push('replace');
});
const launchTeam = vi.fn(async () => {
calls.push('launch');
});
await executeTeamRelaunch({
teamName: 'team-alpha',
isTeamAlive: false,
request: {
teamName: 'team-alpha',
cwd: '/tmp/project',
},
members: [{ name: 'alice', role: 'Reviewer' }],
stopTeam,
replaceMembers,
launchTeam,
});
expect(calls).toEqual(['replace', 'launch']);
expect(stopTeam).not.toHaveBeenCalled();
});
it('keeps changed relaunch provider and model in the replacement and launch payloads', async () => {
const calls: string[] = [];
const stopTeam = vi.fn(async () => {
calls.push('stop');
});
const replaceMembers = vi.fn(async () => {
calls.push('replace');
});
const launchTeam = vi.fn(async () => {
calls.push('launch');
});
const request = {
teamName: 'team-alpha',
cwd: '/tmp/project',
providerId: 'anthropic' as const,
model: 'sonnet',
effort: 'low' as const,
};
const members = [
{ name: 'alice', role: 'Reviewer' },
{ name: 'jack', role: 'Builder', providerId: 'anthropic' as const, model: 'sonnet' },
];
await executeTeamRelaunch({
teamName: 'team-alpha',
isTeamAlive: true,
request,
members,
stopTeam,
replaceMembers,
launchTeam,
});
expect(calls).toEqual(['stop', 'replace', 'launch']);
expect(replaceMembers).toHaveBeenCalledWith('team-alpha', { members });
expect(launchTeam).toHaveBeenCalledWith(request);
});
});