66
77import { act } from 'react' ;
88import { render } from '../../test-utils/render.js' ;
9+ import { waitFor } from '../../test-utils/async.js' ;
910import { ConfigInitDisplay } from './ConfigInitDisplay.js' ;
1011import { describe , it , expect , vi , beforeEach , afterEach } from 'vitest' ;
1112import { AppEvent } from '../../utils/events.js' ;
@@ -63,7 +64,7 @@ describe('ConfigInitDisplay', () => {
6364 const { lastFrame } = render ( < ConfigInitDisplay /> ) ;
6465
6566 // Wait for listener to be registered
66- await vi . waitFor ( ( ) => {
67+ await waitFor ( ( ) => {
6768 if ( ! listener ) throw new Error ( 'Listener not registered yet' ) ;
6869 } ) ;
6970
@@ -84,7 +85,42 @@ describe('ConfigInitDisplay', () => {
8485 } ) ;
8586
8687 // Wait for the UI to update
87- await vi . waitFor ( ( ) => {
88+ await waitFor ( ( ) => {
89+ expect ( lastFrame ( ) ) . toMatchSnapshot ( ) ;
90+ } ) ;
91+ } ) ;
92+
93+ it ( 'truncates list of waiting servers if too many' , async ( ) => {
94+ let listener : ( ( clients ?: Map < string , McpClient > ) => void ) | undefined ;
95+ mockOn . mockImplementation ( ( event , fn ) => {
96+ if ( event === AppEvent . McpClientUpdate ) {
97+ listener = fn ;
98+ }
99+ } ) ;
100+
101+ const { lastFrame } = render ( < ConfigInitDisplay /> ) ;
102+
103+ await waitFor ( ( ) => {
104+ if ( ! listener ) throw new Error ( 'Listener not registered yet' ) ;
105+ } ) ;
106+
107+ const mockClientConnecting = {
108+ getStatus : ( ) => MCPServerStatus . CONNECTING ,
109+ } as McpClient ;
110+
111+ const clients = new Map < string , McpClient > ( [
112+ [ 's1' , mockClientConnecting ] ,
113+ [ 's2' , mockClientConnecting ] ,
114+ [ 's3' , mockClientConnecting ] ,
115+ [ 's4' , mockClientConnecting ] ,
116+ [ 's5' , mockClientConnecting ] ,
117+ ] ) ;
118+
119+ act ( ( ) => {
120+ listener ! ( clients ) ;
121+ } ) ;
122+
123+ await waitFor ( ( ) => {
88124 expect ( lastFrame ( ) ) . toMatchSnapshot ( ) ;
89125 } ) ;
90126 } ) ;
@@ -99,7 +135,7 @@ describe('ConfigInitDisplay', () => {
99135
100136 const { lastFrame } = render ( < ConfigInitDisplay /> ) ;
101137
102- await vi . waitFor ( ( ) => {
138+ await waitFor ( ( ) => {
103139 if ( ! listener ) throw new Error ( 'Listener not registered yet' ) ;
104140 } ) ;
105141
@@ -110,7 +146,7 @@ describe('ConfigInitDisplay', () => {
110146 } ) ;
111147 }
112148
113- await vi . waitFor ( ( ) => {
149+ await waitFor ( ( ) => {
114150 expect ( lastFrame ( ) ) . toMatchSnapshot ( ) ;
115151 } ) ;
116152 } ) ;
0 commit comments