1
1
import WS from "jest-websocket-mock" ;
2
2
import { Connector } from "../js-src/Connector" ;
3
+ import { Channel } from "../js-src/Channel" ;
3
4
4
5
describe ( 'Connector' , ( ) => {
5
- let server ;
6
+ let server : WS ;
6
7
7
8
beforeEach ( ( ) => {
9
+ if ( server ) {
10
+ server . close ( )
11
+ }
12
+
8
13
server = new WS ( "ws://localhost:1234" ) ;
9
14
} ) ;
10
15
@@ -16,9 +21,37 @@ describe('Connector', () => {
16
21
await server . connected ;
17
22
18
23
await expect ( server ) . toReceiveMessage ( '{"event":"whoami"}' ) ;
19
-
20
24
server . send ( '{"event":"whoami","data":{"socket_id":"test-socket-id"}}' )
21
25
22
26
expect ( connector . socketId ( ) ) . toBe ( 'test-socket-id' )
23
27
} )
28
+
29
+ test ( 'we can subscribe to a channel and listen to events' , async ( ) => {
30
+ const connector = new Connector ( {
31
+ host : "ws://localhost:1234" ,
32
+ } )
33
+
34
+ await server . connected ;
35
+
36
+ await expect ( server ) . toReceiveMessage ( '{"event":"whoami"}' ) ;
37
+ server . send ( '{"event":"whoami","data":{"socket_id":"test-socket-id"}}' )
38
+
39
+ const channel = connector . channel ( 'my-test-channel' )
40
+
41
+ await expect ( server ) . toReceiveMessage ( '{"event":"subscribe","data":{"channel":"my-test-channel"}}' ) ;
42
+
43
+ server . send ( '{"event":"subscription_succeeded","channel":"my-test-channel"}' )
44
+
45
+ expect ( channel ) . toBeInstanceOf ( Channel )
46
+
47
+ const handler1 = jest . fn ( ) ;
48
+ const handler2 = jest . fn ( ) ;
49
+
50
+ channel . on ( 'my-test-event' , handler1 )
51
+
52
+ server . send ( '{"event":"my-test-event","channel":"my-test-channel","data":{}}' )
53
+
54
+ expect ( handler1 ) . toBeCalled ( ) ;
55
+ expect ( handler2 ) . not . toBeCalled ( ) ;
56
+ } )
24
57
} ) ;
0 commit comments