1
1
import { getNetworkFailures } from '../../src/tools/automate' ;
2
2
import { retrieveNetworkFailures } from '../../src/lib/api' ;
3
+ import addAutomateTools from '../../src/tools/automate' ;
3
4
4
5
jest . mock ( '../../src/lib/api' , ( ) => ( {
5
6
retrieveNetworkFailures : jest . fn ( )
6
7
} ) ) ;
7
8
jest . mock ( '../../src/lib/instrumentation' , ( ) => ( {
8
- trackMCPEvent : jest . fn ( )
9
+ trackMCPEvent : jest . fn ( ) ,
10
+ trackMCPFailure : jest . fn ( )
9
11
} ) ) ;
10
12
jest . mock ( '../../src/logger' , ( ) => ( {
11
13
error : jest . fn ( ) ,
@@ -26,10 +28,23 @@ describe('getNetworkFailures', () => {
26
28
] ,
27
29
totalFailures : 1
28
30
} ;
31
+
32
+ let serverMock : any ;
29
33
30
34
beforeEach ( ( ) => {
31
35
jest . clearAllMocks ( ) ;
32
36
( retrieveNetworkFailures as jest . Mock ) . mockResolvedValue ( mockFailures ) ;
37
+
38
+ serverMock = {
39
+ tool : jest . fn ( ( name , desc , schema , handler ) => {
40
+ serverMock . handler = handler ;
41
+ } ) ,
42
+ server : {
43
+ getClientVersion : jest . fn ( ) . mockReturnValue ( { name : 'test-client' , version : '1.0.0' } )
44
+ }
45
+ } ;
46
+
47
+ addAutomateTools ( serverMock ) ;
33
48
} ) ;
34
49
35
50
it ( 'should return failure logs when present' , async ( ) => {
@@ -44,13 +59,13 @@ describe('getNetworkFailures', () => {
44
59
( retrieveNetworkFailures as jest . Mock ) . mockResolvedValue ( { failures : [ ] , totalFailures : 0 } ) ;
45
60
const result = await getNetworkFailures ( { sessionId : validSessionId } ) ;
46
61
expect ( retrieveNetworkFailures ) . toHaveBeenCalledWith ( validSessionId ) ;
47
- expect ( result . content [ 0 ] . text ) . toContain ( 'No network failures found for sessio ' ) ;
62
+ expect ( result . content [ 0 ] . text ) . toContain ( 'No network failures found for session ' ) ;
48
63
expect ( result . isError ) . toBeFalsy ( ) ;
49
64
} ) ;
50
65
51
66
it ( 'should handle errors from the API' , async ( ) => {
52
67
( retrieveNetworkFailures as jest . Mock ) . mockRejectedValue ( new Error ( 'Invalid session ID' ) ) ;
53
- const result = await getNetworkFailures ( { sessionId : 'invalid-id' } ) ;
68
+ const result = await serverMock . handler ( { sessionId : 'invalid-id' } ) ;
54
69
expect ( retrieveNetworkFailures ) . toHaveBeenCalledWith ( 'invalid-id' ) ;
55
70
expect ( result . content [ 0 ] . text ) . toBe ( 'Failed to fetch network logs: Invalid session ID' ) ;
56
71
expect ( result . content [ 0 ] . isError ) . toBe ( true ) ;
@@ -59,7 +74,7 @@ describe('getNetworkFailures', () => {
59
74
60
75
it ( 'should handle empty session ID' , async ( ) => {
61
76
( retrieveNetworkFailures as jest . Mock ) . mockRejectedValue ( new Error ( 'Session ID is required' ) ) ;
62
- const result = await getNetworkFailures ( { sessionId : '' } ) ;
77
+ const result = await serverMock . handler ( { sessionId : '' } ) ;
63
78
expect ( retrieveNetworkFailures ) . toHaveBeenCalledWith ( '' ) ;
64
79
expect ( result . content [ 0 ] . text ) . toBe ( 'Failed to fetch network logs: Session ID is required' ) ;
65
80
expect ( result . content [ 0 ] . isError ) . toBe ( true ) ;
0 commit comments