1
- import { SocketServerMock } from 'socket.io-mock-ts '
2
- import { config } from '../../src/config '
1
+ import { EndpointContext } from '@chainlink/external-adapter-framework/adapter '
2
+ import { LoggerFactoryProvider } from '@chainlink/external-adapter-framework/util '
3
3
import { InputParameters } from '@chainlink/external-adapter-framework/validation'
4
- import { LoggerFactoryProvider , sleep } from '@chainlink/external-adapter-framework/util'
5
4
import * as socketIoClient from 'socket.io-client'
5
+ import { SocketServerMock } from 'socket.io-mock-ts'
6
+ import { config } from '../../src/config'
6
7
import { type SocketIOTransportTypes , SocketIOTransport } from '../../src/transport/price-socketio'
7
8
8
9
jest . mock ( 'socket.io-client' )
9
10
10
11
LoggerFactoryProvider . set ( )
11
12
13
+ type SubscribeCallback = ( response : {
14
+ status : string
15
+ involvedSubscriptions : string [ ]
16
+ subscriptionsAfterUpdate : string [ ]
17
+ } ) => void
18
+ type SubscribeCall = {
19
+ subscriptions : string [ ]
20
+ callback : SubscribeCallback
21
+ }
22
+
12
23
describe ( 'SocketIOTransport' , ( ) => {
13
24
const API_TIMEOUT = 30_000
14
25
const BACKGROUND_EXECUTE_MS_SSE = 1_000
@@ -34,7 +45,7 @@ describe('SocketIOTransport', () => {
34
45
config . initialize ( )
35
46
36
47
mockSocket = new SocketServerMock ( )
37
- jest . spyOn ( socketIoClient , 'io' ) . mockReturnValue ( mockSocket )
48
+ jest . spyOn ( socketIoClient , 'io' ) . mockReturnValue ( mockSocket as unknown as socketIoClient . Socket )
38
49
} )
39
50
40
51
it ( 'should connect to endpoint' , async ( ) => {
@@ -85,10 +96,12 @@ describe('SocketIOTransport', () => {
85
96
} )
86
97
87
98
it ( 'should not subscribe again without new subscriptions' , async ( ) => {
88
- const subscribeCalls = [ ]
89
- const subscribeSpy = jest . fn ( ) . mockImplementation ( ( subscriptions , callback ) => {
90
- subscribeCalls . push ( { subscriptions, callback } )
91
- } )
99
+ const subscribeCalls : SubscribeCall [ ] = [ ]
100
+ const subscribeSpy = jest
101
+ . fn ( )
102
+ . mockImplementation ( ( subscriptions : string [ ] , callback : SubscribeCallback ) => {
103
+ subscribeCalls . push ( { subscriptions, callback } )
104
+ } )
92
105
mockSocket . clientMock . on ( 'subscribe' , subscribeSpy )
93
106
94
107
const transport = new SocketIOTransport ( )
@@ -123,7 +136,7 @@ describe('SocketIOTransport', () => {
123
136
} )
124
137
125
138
it ( 'should unsubscribe' , async ( ) => {
126
- const subscribeCalls = [ ]
139
+ const subscribeCalls : SubscribeCall [ ] = [ ]
127
140
const subscribeSpy = jest . fn ( ) . mockImplementation ( ( subscriptions , callback ) => {
128
141
subscribeCalls . push ( { subscriptions, callback } )
129
142
} )
@@ -169,13 +182,13 @@ describe('SocketIOTransport', () => {
169
182
} )
170
183
171
184
it ( 'should subscribe again after unsubscribe' , async ( ) => {
172
- const subscribeCalls = [ ]
185
+ const subscribeCalls : SubscribeCall [ ] = [ ]
173
186
const subscribeSpy = jest . fn ( ) . mockImplementation ( ( subscriptions , callback ) => {
174
187
subscribeCalls . push ( { subscriptions, callback } )
175
188
} )
176
189
mockSocket . clientMock . on ( 'subscribe' , subscribeSpy )
177
190
178
- const unsubscribeCalls = [ ]
191
+ const unsubscribeCalls : SubscribeCall [ ] = [ ]
179
192
const unsubscribeSpy = jest . fn ( ) . mockImplementation ( ( subscriptions , callback ) => {
180
193
unsubscribeCalls . push ( { subscriptions, callback } )
181
194
} )
@@ -225,7 +238,7 @@ describe('SocketIOTransport', () => {
225
238
} )
226
239
227
240
it ( 'should subscribe and unsubscribe' , async ( ) => {
228
- const subscribeCalls = [ ]
241
+ const subscribeCalls : SubscribeCall [ ] = [ ]
229
242
const subscribeSpy = jest . fn ( ) . mockImplementation ( ( subscriptions , callback ) => {
230
243
subscribeCalls . push ( { subscriptions, callback } )
231
244
} )
@@ -282,7 +295,7 @@ describe('SocketIOTransport', () => {
282
295
} )
283
296
284
297
it ( 'should subscribe again if previous subscribe call timed out' , async ( ) => {
285
- const subscribeCalls = [ ]
298
+ const subscribeCalls : SubscribeCall [ ] = [ ]
286
299
const subscribeSpy = jest . fn ( ) . mockImplementation ( ( subscriptions , callback ) => {
287
300
subscribeCalls . push ( { subscriptions, callback } )
288
301
} )
@@ -332,7 +345,7 @@ describe('SocketIOTransport', () => {
332
345
} )
333
346
334
347
it ( 'should resubscribe even if unsubscribe timed out' , async ( ) => {
335
- const subscribeCalls = [ ]
348
+ const subscribeCalls : SubscribeCall [ ] = [ ]
336
349
const subscribeSpy = jest . fn ( ) . mockImplementation ( ( subscriptions , callback ) => {
337
350
subscribeCalls . push ( { subscriptions, callback } )
338
351
} )
0 commit comments