@@ -3,85 +3,87 @@ import { createClient } from 'graphql-sse'
33import { createSchema , createYoga } from '../src'
44
55describe ( 'GraphQL SSE Client compatibility' , ( ) => {
6- const yoga = createYoga ( {
7- sse : {
8- graphqlSSEDistinctConnections : true ,
9- } ,
10- schema : createSchema ( {
11- typeDefs : /* GraphQL */ `
12- type Query {
13- hello: String
14- }
15- type Subscription {
16- greetings: String
17- }
18- ` ,
19- resolvers : {
20- Query : {
21- hello : ( ) => 'world' ,
22- } ,
23- Subscription : {
24- greetings : {
25- async * subscribe ( ) {
26- yield { greetings : 'Hi' }
27- await new Promise ( ( resolve ) => setTimeout ( resolve , 300 ) )
28- yield { greetings : 'Bonjour' }
29- await new Promise ( ( resolve ) => setTimeout ( resolve , 300 ) )
30- yield { greetings : 'Hola' }
31- await new Promise ( ( resolve ) => setTimeout ( resolve , 300 ) )
32- yield { greetings : 'Ciao' }
33- await new Promise ( ( resolve ) => setTimeout ( resolve , 300 ) )
34- yield { greetings : 'Hallo' }
6+ describe ( 'Distinct Connections' , ( ) => {
7+ const yoga = createYoga ( {
8+ sse : {
9+ graphqlSSEDistinctConnections : true ,
10+ } ,
11+ schema : createSchema ( {
12+ typeDefs : /* GraphQL */ `
13+ type Query {
14+ hello: String
15+ }
16+ type Subscription {
17+ greetings: String
18+ }
19+ ` ,
20+ resolvers : {
21+ Query : {
22+ hello : ( ) => 'world' ,
23+ } ,
24+ Subscription : {
25+ greetings : {
26+ async * subscribe ( ) {
27+ yield { greetings : 'Hi' }
28+ await new Promise ( ( resolve ) => setTimeout ( resolve , 300 ) )
29+ yield { greetings : 'Bonjour' }
30+ await new Promise ( ( resolve ) => setTimeout ( resolve , 300 ) )
31+ yield { greetings : 'Hola' }
32+ await new Promise ( ( resolve ) => setTimeout ( resolve , 300 ) )
33+ yield { greetings : 'Ciao' }
34+ await new Promise ( ( resolve ) => setTimeout ( resolve , 300 ) )
35+ yield { greetings : 'Hallo' }
36+ } ,
3537 } ,
3638 } ,
3739 } ,
38- } ,
39- } ) ,
40- } )
41- const client = createClient ( {
42- url : 'http://localhost:4000/graphql' ,
43- fetchFn : yoga . fetch ,
44- abortControllerImpl : yoga . fetchAPI . AbortController ,
45- retryAttempts : 0 ,
46- } )
47- let unsubscribe : ( ) => void
48- afterAll ( ( ) => {
49- unsubscribe ?.( )
50- client . dispose ( )
51- } )
52- it ( 'handle queries' , async ( ) => {
53- const result = await new Promise ( ( resolve , reject ) => {
54- let result : ExecutionResult < Record < string , unknown > , unknown >
55- unsubscribe = client . subscribe (
56- {
57- query : '{ hello }' ,
58- } ,
59- {
60- next : ( data ) => ( result = data ) ,
61- error : reject ,
62- complete : ( ) => resolve ( result ) ,
63- } ,
64- )
40+ } ) ,
6541 } )
42+ const client = createClient ( {
43+ url : 'http://localhost:4000/graphql' ,
44+ fetchFn : yoga . fetch ,
45+ abortControllerImpl : yoga . fetchAPI . AbortController ,
46+ retryAttempts : 0 ,
47+ } )
48+ let unsubscribe : ( ) => void
49+ afterAll ( ( ) => {
50+ unsubscribe ?.( )
51+ client . dispose ( )
52+ } )
53+ it ( 'handle queries' , async ( ) => {
54+ const result = await new Promise ( ( resolve , reject ) => {
55+ let result : ExecutionResult < Record < string , unknown > , unknown >
56+ unsubscribe = client . subscribe (
57+ {
58+ query : '{ hello }' ,
59+ } ,
60+ {
61+ next : ( data ) => ( result = data ) ,
62+ error : reject ,
63+ complete : ( ) => resolve ( result ) ,
64+ } ,
65+ )
66+ } )
6667
67- expect ( result ) . toEqual ( { data : { hello : 'world' } } )
68- } )
69- it ( 'handle subscriptions' , async ( ) => {
70- const onNext = jest . fn ( )
71-
72- await new Promise < void > ( ( resolve , reject ) => {
73- unsubscribe = client . subscribe (
74- {
75- query : 'subscription { greetings }' ,
76- } ,
77- {
78- next : onNext ,
79- error : reject ,
80- complete : resolve ,
81- } ,
82- )
68+ expect ( result ) . toEqual ( { data : { hello : 'world' } } )
8369 } )
70+ it ( 'handle subscriptions' , async ( ) => {
71+ const onNext = jest . fn ( )
8472
85- expect ( onNext ) . toBeCalledTimes ( 5 ) // we say "Hi" in 5 languages
73+ await new Promise < void > ( ( resolve , reject ) => {
74+ unsubscribe = client . subscribe (
75+ {
76+ query : 'subscription { greetings }' ,
77+ } ,
78+ {
79+ next : onNext ,
80+ error : reject ,
81+ complete : resolve ,
82+ } ,
83+ )
84+ } )
85+
86+ expect ( onNext ) . toBeCalledTimes ( 5 ) // we say "Hi" in 5 languages
87+ } )
8688 } )
8789} )
0 commit comments