@@ -4,6 +4,7 @@ import mcpRoutes from '../../../../src/routes/mcp/index';
44
55// Mock all the route modules
66vi . mock ( '../../../../src/routes/mcp/categories/list' ) ;
7+ vi . mock ( '../../../../src/routes/mcp/categories/list-featured' ) ;
78vi . mock ( '../../../../src/routes/mcp/categories/create' ) ;
89vi . mock ( '../../../../src/routes/mcp/categories/update' ) ;
910vi . mock ( '../../../../src/routes/mcp/categories/delete' ) ;
@@ -35,6 +36,7 @@ vi.mock('../../../../src/routes/mcp/user-configurations');
3536
3637// Import mocked modules
3738import listCategories from '../../../../src/routes/mcp/categories/list' ;
39+ import listFeaturedCategories from '../../../../src/routes/mcp/categories/list-featured' ;
3840import createCategory from '../../../../src/routes/mcp/categories/create' ;
3941import updateCategory from '../../../../src/routes/mcp/categories/update' ;
4042import deleteCategory from '../../../../src/routes/mcp/categories/delete' ;
@@ -66,6 +68,7 @@ import userConfigurationsRoutes from '../../../../src/routes/mcp/user-configurat
6668
6769// Type the mocked functions
6870const mockListCategories = listCategories as MockedFunction < typeof listCategories > ;
71+ const mockListFeaturedCategories = listFeaturedCategories as MockedFunction < typeof listFeaturedCategories > ;
6972const mockCreateCategory = createCategory as MockedFunction < typeof createCategory > ;
7073const mockUpdateCategory = updateCategory as MockedFunction < typeof updateCategory > ;
7174const mockDeleteCategory = deleteCategory as MockedFunction < typeof deleteCategory > ;
@@ -115,6 +118,7 @@ describe('MCP Routes Registration', () => {
115118
116119 // Mock all route modules to return resolved promises
117120 mockListCategories . mockResolvedValue ( undefined ) ;
121+ mockListFeaturedCategories . mockResolvedValue ( undefined ) ;
118122 mockCreateCategory . mockResolvedValue ( undefined ) ;
119123 mockUpdateCategory . mockResolvedValue ( undefined ) ;
120124 mockDeleteCategory . mockResolvedValue ( undefined ) ;
@@ -148,14 +152,15 @@ describe('MCP Routes Registration', () => {
148152 it ( 'should register all MCP route modules' , async ( ) => {
149153 await mcpRoutes ( mockFastify as FastifyInstance ) ;
150154
151- // Verify that all 24 routes are registered
152- expect ( mockFastify . register ) . toHaveBeenCalledTimes ( 24 ) ;
155+ // Verify that all 25 routes are registered
156+ expect ( mockFastify . register ) . toHaveBeenCalledTimes ( 25 ) ;
153157 } ) ;
154158
155159 it ( 'should register all category routes' , async ( ) => {
156160 await mcpRoutes ( mockFastify as FastifyInstance ) ;
157161
158162 expect ( mockFastify . register ) . toHaveBeenCalledWith ( listCategories ) ;
163+ expect ( mockFastify . register ) . toHaveBeenCalledWith ( listFeaturedCategories ) ;
159164 expect ( mockFastify . register ) . toHaveBeenCalledWith ( createCategory ) ;
160165 expect ( mockFastify . register ) . toHaveBeenCalledWith ( updateCategory ) ;
161166 expect ( mockFastify . register ) . toHaveBeenCalledWith ( deleteCategory ) ;
@@ -222,88 +227,89 @@ describe('MCP Routes Registration', () => {
222227 await mcpRoutes ( mockFastify as FastifyInstance ) ;
223228
224229 const registerCalls = ( mockFastify . register as any ) . mock . calls ;
225-
226- // Check that category routes are registered first (positions 0-3 )
230+
231+ // Check that category routes are registered first (positions 0-4 )
227232 expect ( registerCalls [ 0 ] [ 0 ] ) . toBe ( listCategories ) ;
228- expect ( registerCalls [ 1 ] [ 0 ] ) . toBe ( createCategory ) ;
229- expect ( registerCalls [ 2 ] [ 0 ] ) . toBe ( updateCategory ) ;
230- expect ( registerCalls [ 3 ] [ 0 ] ) . toBe ( deleteCategory ) ;
233+ expect ( registerCalls [ 1 ] [ 0 ] ) . toBe ( listFeaturedCategories ) ;
234+ expect ( registerCalls [ 2 ] [ 0 ] ) . toBe ( createCategory ) ;
235+ expect ( registerCalls [ 3 ] [ 0 ] ) . toBe ( updateCategory ) ;
236+ expect ( registerCalls [ 4 ] [ 0 ] ) . toBe ( deleteCategory ) ;
231237 } ) ;
232238
233239 it ( 'should register server routes after categories' , async ( ) => {
234240 await mcpRoutes ( mockFastify as FastifyInstance ) ;
235241
236242 const registerCalls = ( mockFastify . register as any ) . mock . calls ;
237-
238- // Check that server routes are in positions 4-10
239- expect ( registerCalls [ 4 ] [ 0 ] ) . toBe ( listServers ) ;
240- expect ( registerCalls [ 5 ] [ 0 ] ) . toBe ( getServer ) ;
241- expect ( registerCalls [ 6 ] [ 0 ] ) . toBe ( getServerReadme ) ;
242- expect ( registerCalls [ 7 ] [ 0 ] ) . toBe ( searchServers ) ;
243- expect ( registerCalls [ 8 ] [ 0 ] ) . toBe ( getTags ) ;
244- expect ( registerCalls [ 9 ] [ 0 ] ) . toBe ( getLanguages ) ;
245- expect ( registerCalls [ 10 ] [ 0 ] ) . toBe ( getRuntimes ) ;
243+
244+ // Check that server routes are in positions 5-11
245+ expect ( registerCalls [ 5 ] [ 0 ] ) . toBe ( listServers ) ;
246+ expect ( registerCalls [ 6 ] [ 0 ] ) . toBe ( getServer ) ;
247+ expect ( registerCalls [ 7 ] [ 0 ] ) . toBe ( getServerReadme ) ;
248+ expect ( registerCalls [ 8 ] [ 0 ] ) . toBe ( searchServers ) ;
249+ expect ( registerCalls [ 9 ] [ 0 ] ) . toBe ( getTags ) ;
250+ expect ( registerCalls [ 10 ] [ 0 ] ) . toBe ( getLanguages ) ;
251+ expect ( registerCalls [ 11 ] [ 0 ] ) . toBe ( getRuntimes ) ;
246252 } ) ;
247253
248254 it ( 'should register global server management routes correctly' , async ( ) => {
249255 await mcpRoutes ( mockFastify as FastifyInstance ) ;
250256
251257 const registerCalls = ( mockFastify . register as any ) . mock . calls ;
252-
253- // Check that global server management routes are in positions 11-13
254- expect ( registerCalls [ 11 ] [ 0 ] ) . toBe ( createGlobalServer ) ;
255- expect ( registerCalls [ 12 ] [ 0 ] ) . toBe ( updateGlobalServer ) ;
256- expect ( registerCalls [ 13 ] [ 0 ] ) . toBe ( deleteGlobalServer ) ;
258+
259+ // Check that global server management routes are in positions 12-14
260+ expect ( registerCalls [ 12 ] [ 0 ] ) . toBe ( createGlobalServer ) ;
261+ expect ( registerCalls [ 13 ] [ 0 ] ) . toBe ( updateGlobalServer ) ;
262+ expect ( registerCalls [ 14 ] [ 0 ] ) . toBe ( deleteGlobalServer ) ;
257263 } ) ;
258264
259265 it ( 'should register team server management routes correctly' , async ( ) => {
260266 await mcpRoutes ( mockFastify as FastifyInstance ) ;
261267
262268 const registerCalls = ( mockFastify . register as any ) . mock . calls ;
263-
264- // Check that team server management routes are in positions 14-17
265- expect ( registerCalls [ 14 ] [ 0 ] ) . toBe ( listTeamServers ) ;
266- expect ( registerCalls [ 15 ] [ 0 ] ) . toBe ( createTeamServer ) ;
267- expect ( registerCalls [ 16 ] [ 0 ] ) . toBe ( updateTeamServer ) ;
268- expect ( registerCalls [ 17 ] [ 0 ] ) . toBe ( deleteTeamServer ) ;
269+
270+ // Check that team server management routes are in positions 15-18
271+ expect ( registerCalls [ 15 ] [ 0 ] ) . toBe ( listTeamServers ) ;
272+ expect ( registerCalls [ 16 ] [ 0 ] ) . toBe ( createTeamServer ) ;
273+ expect ( registerCalls [ 17 ] [ 0 ] ) . toBe ( updateTeamServer ) ;
274+ expect ( registerCalls [ 18 ] [ 0 ] ) . toBe ( deleteTeamServer ) ;
269275 } ) ;
270276
271277 it ( 'should register version management routes correctly' , async ( ) => {
272278 await mcpRoutes ( mockFastify as FastifyInstance ) ;
273279
274280 const registerCalls = ( mockFastify . register as any ) . mock . calls ;
275-
276- // Check that version management routes are in positions 18-20
277- expect ( registerCalls [ 18 ] [ 0 ] ) . toBe ( listVersions ) ;
278- expect ( registerCalls [ 19 ] [ 0 ] ) . toBe ( createVersion ) ;
279- expect ( registerCalls [ 20 ] [ 0 ] ) . toBe ( updateVersion ) ;
281+
282+ // Check that version management routes are in positions 19-21
283+ expect ( registerCalls [ 19 ] [ 0 ] ) . toBe ( listVersions ) ;
284+ expect ( registerCalls [ 20 ] [ 0 ] ) . toBe ( createVersion ) ;
285+ expect ( registerCalls [ 21 ] [ 0 ] ) . toBe ( updateVersion ) ;
280286 } ) ;
281287
282288 it ( 'should register GitHub integration routes correctly' , async ( ) => {
283289 await mcpRoutes ( mockFastify as FastifyInstance ) ;
284290
285291 const registerCalls = ( mockFastify . register as any ) . mock . calls ;
286-
287- // Check that GitHub route is at position 21
288- expect ( registerCalls [ 21 ] [ 0 ] ) . toBe ( getRepoInfo ) ;
292+
293+ // Check that GitHub route is at position 22
294+ expect ( registerCalls [ 22 ] [ 0 ] ) . toBe ( getRepoInfo ) ;
289295 } ) ;
290296
291297 it ( 'should register installations routes correctly' , async ( ) => {
292298 await mcpRoutes ( mockFastify as FastifyInstance ) ;
293299
294300 const registerCalls = ( mockFastify . register as any ) . mock . calls ;
295-
296- // Check that installations route is at position 22
297- expect ( registerCalls [ 22 ] [ 0 ] ) . toBe ( installationsRoutes ) ;
301+
302+ // Check that installations route is at position 23
303+ expect ( registerCalls [ 23 ] [ 0 ] ) . toBe ( installationsRoutes ) ;
298304 } ) ;
299305
300306 it ( 'should register user configurations routes last' , async ( ) => {
301307 await mcpRoutes ( mockFastify as FastifyInstance ) ;
302308
303309 const registerCalls = ( mockFastify . register as any ) . mock . calls ;
304-
305- // Check that user configurations route is at position 23 (last)
306- expect ( registerCalls [ 23 ] [ 0 ] ) . toBe ( userConfigurationsRoutes ) ;
310+
311+ // Check that user configurations route is at position 24 (last)
312+ expect ( registerCalls [ 24 ] [ 0 ] ) . toBe ( userConfigurationsRoutes ) ;
307313 } ) ;
308314 } ) ;
309315
@@ -333,6 +339,7 @@ describe('MCP Routes Registration', () => {
333339 it ( 'should properly import and use all route modules' , ( ) => {
334340 // Verify that all modules are properly imported and mocked
335341 expect ( listCategories ) . toBeDefined ( ) ;
342+ expect ( listFeaturedCategories ) . toBeDefined ( ) ;
336343 expect ( createCategory ) . toBeDefined ( ) ;
337344 expect ( updateCategory ) . toBeDefined ( ) ;
338345 expect ( deleteCategory ) . toBeDefined ( ) ;
0 commit comments