63 lines
1.5 KiB
TypeScript
63 lines
1.5 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
|
|
import { hasUnresolvedMemberSpawnStatus } from '@renderer/utils/memberSpawnStatusPolling';
|
|
|
|
describe('hasUnresolvedMemberSpawnStatus', () => {
|
|
it('continues polling while any launch member is still starting', () => {
|
|
expect(
|
|
hasUnresolvedMemberSpawnStatus(
|
|
{
|
|
bob: {
|
|
status: 'spawning',
|
|
launchState: 'starting',
|
|
updatedAt: '2026-04-23T10:00:00.000Z',
|
|
},
|
|
},
|
|
undefined
|
|
)
|
|
).toBe(true);
|
|
});
|
|
|
|
it('continues polling after ready while snapshot summary still has pending members', () => {
|
|
expect(
|
|
hasUnresolvedMemberSpawnStatus(
|
|
{
|
|
alice: {
|
|
status: 'online',
|
|
launchState: 'confirmed_alive',
|
|
updatedAt: '2026-04-23T10:00:00.000Z',
|
|
},
|
|
},
|
|
{
|
|
summary: {
|
|
pendingCount: 1,
|
|
},
|
|
}
|
|
)
|
|
).toBe(true);
|
|
});
|
|
|
|
it('stops polling when every member is terminal confirmed or failed', () => {
|
|
expect(
|
|
hasUnresolvedMemberSpawnStatus(
|
|
{
|
|
alice: {
|
|
status: 'online',
|
|
launchState: 'confirmed_alive',
|
|
updatedAt: '2026-04-23T10:00:00.000Z',
|
|
},
|
|
bob: {
|
|
status: 'error',
|
|
launchState: 'failed_to_start',
|
|
updatedAt: '2026-04-23T10:00:00.000Z',
|
|
},
|
|
},
|
|
{
|
|
summary: {
|
|
pendingCount: 0,
|
|
},
|
|
}
|
|
)
|
|
).toBe(false);
|
|
});
|
|
});
|