104 lines
2.8 KiB
TypeScript
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);
|
|
});
|
|
});
|