@@ -9,8 +9,6 @@ describe('SSE client', function () {
99
1010 let server : any
1111 let app : Application < TestServiceTypes >
12- let client1 : Application < TestServiceTypes >
13- let client2 : Application < TestServiceTypes >
1412
1513 beforeAll ( async ( ) => {
1614 app = getApp ( )
@@ -32,19 +30,6 @@ describe('SSE client', function () {
3230 } )
3331
3432 server = await createTestServer ( port , app )
35-
36- client1 = feathers < TestServiceTypes > ( ) . configure (
37- fetchClient ( fetch , {
38- baseUrl : url ,
39- sse : 'sse'
40- } )
41- )
42- client2 = feathers < TestServiceTypes > ( ) . configure (
43- fetchClient ( fetch , {
44- baseUrl : url ,
45- sse : 'sse'
46- } )
47- )
4833 } )
4934
5035 afterAll ( async ( ) => {
@@ -53,17 +38,32 @@ describe('SSE client', function () {
5338
5439 it ( 'should stream basic SSE between clients, can abort sse' , async ( ) => {
5540 const events : Todo [ ] = [ ]
41+ const client1 = feathers < TestServiceTypes > ( ) . configure (
42+ fetchClient ( fetch , {
43+ baseUrl : url ,
44+ sse : 'sse'
45+ } )
46+ )
5647
57- client1 . service ( 'sse' ) . emit ( 'start' )
58-
59- const controller = await new Promise < AbortController > ( ( resolve ) => {
48+ const connectedPromise = new Promise < AbortController > ( ( resolve ) => {
6049 client1 . service ( 'sse' ) . once ( 'connected' , ( data : AbortController ) => resolve ( data ) )
6150 } )
6251
52+ await client1 . setup ( )
53+
54+ const controller = await connectedPromise
55+
6356 client1 . service ( 'todos' ) . on ( 'created' , ( data : Todo ) => {
6457 events . push ( data )
6558 } )
6659
60+ const client2 = feathers < TestServiceTypes > ( ) . configure (
61+ fetchClient ( fetch , {
62+ baseUrl : url ,
63+ sse : 'sse'
64+ } )
65+ )
66+
6767 await client2 . service ( 'todos' ) . create ( { text : 'todo 1' , complete : true } )
6868 await Promise . all ( [
6969 client2 . service ( 'todos' ) . create ( { text : 'todo 2' , complete : false } ) ,
@@ -82,31 +82,57 @@ describe('SSE client', function () {
8282 } )
8383
8484 it ( 'emits AbortController on successful connection' , async ( ) => {
85- const params = {
86- query : { message : 'testing' }
87- }
88-
89- client1 . service ( 'sse' ) . emit ( 'start' , params )
85+ const client = feathers < TestServiceTypes > ( ) . configure (
86+ fetchClient ( fetch , {
87+ baseUrl : url ,
88+ sse : {
89+ path : 'sse' ,
90+ params : { query : { message : 'testing' } }
91+ }
92+ } )
93+ )
9094
91- const controller = await new Promise < AbortController > ( ( resolve ) => {
92- client1 . service ( 'sse' ) . once ( 'connected' , ( data : AbortController ) => resolve ( data ) )
95+ const connectedPromise = new Promise < AbortController > ( ( resolve ) => {
96+ client . service ( 'sse' ) . once ( 'connected' , ( data : AbortController ) => resolve ( data ) )
9397 } )
9498
99+ await client . setup ( )
100+
101+ const controller = await connectedPromise
102+
95103 controller . abort ( )
96104 expect ( controller . signal . aborted ) . toBe ( true )
97105 } )
98106
99107 it ( 'only receive events for their channels' , async ( ) => {
100108 const events : Todo [ ] = [ ]
109+ const client1 = feathers < TestServiceTypes > ( ) . configure (
110+ fetchClient ( fetch , {
111+ baseUrl : url ,
112+ sse : {
113+ path : 'sse' ,
114+ params : { query : { channel : 'client' } }
115+ }
116+ } )
117+ )
118+ const client2 = feathers < TestServiceTypes > ( ) . configure (
119+ fetchClient ( fetch , {
120+ baseUrl : url ,
121+ sse : {
122+ path : 'sse' ,
123+ params : { query : { channel : 'client' } }
124+ }
125+ } )
126+ )
101127
102- client1 . service ( 'sse' ) . emit ( 'start' , { query : { channel : 'client' } } )
103- client2 . service ( 'sse' ) . emit ( 'start' , { query : { channel : 'client' } } )
104-
105- await Promise . all ( [
128+ const connected = Promise . all ( [
106129 new Promise ( ( resolve ) => client1 . service ( 'sse' ) . once ( 'connected' , resolve ) ) ,
107130 new Promise ( ( resolve ) => client2 . service ( 'sse' ) . once ( 'connected' , resolve ) )
108131 ] )
109132
133+ await Promise . all ( [ client1 . setup ( ) , client2 . setup ( ) ] )
134+ await connected
135+
110136 client1 . service ( 'todos' ) . on ( 'created' , ( todo : Todo ) => events . push ( todo ) )
111137 client2 . service ( 'todos' ) . on ( 'created' , ( todo : Todo ) => events . push ( todo ) )
112138
@@ -144,12 +170,14 @@ describe('SSE client', function () {
144170 }
145171 } )
146172 )
147- reconnectClient . service ( 'sse' ) . emit ( 'start' )
148173
149- await new Promise < AbortController > ( ( resolve ) => {
174+ const connectedPromise = new Promise < AbortController > ( ( resolve ) => {
150175 reconnectClient . service ( 'sse' ) . once ( 'connected' , ( data : AbortController ) => resolve ( data ) )
151176 } )
152177
178+ await reconnectClient . setup ( )
179+ await connectedPromise
180+
153181 const disconnectEvent = new Promise < Error > ( ( resolve ) => {
154182 reconnectClient . service ( 'sse' ) . once ( 'disconnected' , ( error : Error ) => resolve ( error ) )
155183 } )
0 commit comments