@@ -18,6 +18,7 @@ const disconnectCallback = jest.fn();
1818const removeAllListeners = jest . fn ( ) ;
1919const cancel = jest . fn ( ) ;
2020const destroy = jest . fn ( ) ;
21+ const setSyncContext = jest . fn ( ) ;
2122
2223let onDataCallback : ( data : SyncFlagsResponse ) => void = ( ) => ( { } ) ;
2324let onErrorCallback : ( err : Error ) => void = ( ) => ( { } ) ;
@@ -59,11 +60,12 @@ describe('grpc fetch', () => {
5960
6061 it ( 'should handle data sync and emit callbacks' , ( done ) => {
6162 const flagConfiguration = '{"flags":{}}' ;
62- const fetch = new GrpcFetch ( cfg , serviceMock ) ;
63+ const fetch = new GrpcFetch ( cfg , setSyncContext , serviceMock ) ;
6364 fetch
6465 . connect ( dataCallback , reconnectCallback , jest . fn ( ) , disconnectCallback )
6566 . then ( ( ) => {
6667 try {
68+ expect ( setSyncContext ) . toHaveBeenCalledTimes ( 0 ) ;
6769 expect ( dataCallback ) . toHaveBeenCalledTimes ( 1 ) ;
6870 expect ( dataCallback ) . toHaveBeenCalledWith ( flagConfiguration ) ;
6971 expect ( changedCallback ) . toHaveBeenCalledTimes ( 0 ) ;
@@ -80,14 +82,40 @@ describe('grpc fetch', () => {
8082 onDataCallback ( { flagConfiguration } ) ;
8183 } ) ;
8284
85+ it ( 'should handle SyncContext from SyncFlagsResponse' , ( done ) => {
86+ const initFlagConfig = '{"flags":{}}' ;
87+ const syncContext = { "test" : "example" } ;
88+
89+ const fetch = new GrpcFetch ( cfg , setSyncContext , serviceMock ) ;
90+ fetch
91+ . connect ( dataCallback , reconnectCallback , changedCallback , disconnectCallback )
92+ . then ( ( ) => {
93+ try {
94+ // Callback assertions
95+ expect ( setSyncContext ) . toHaveBeenCalledTimes ( 1 ) ;
96+ expect ( setSyncContext ) . toHaveBeenCalledWith ( syncContext ) ;
97+
98+ done ( ) ;
99+ } catch ( err ) {
100+ done ( err ) ;
101+ }
102+ } )
103+ . catch ( ( err ) => {
104+ done ( err ) ;
105+ } ) ;
106+
107+ // First connection
108+ onDataCallback ( { flagConfiguration : initFlagConfig , syncContext : syncContext } ) ;
109+ } ) ;
110+
83111 it ( 'should handle data sync reconnection' , ( done ) => {
84112 const initFlagConfig = '{"flags":{}}' ;
85113 const updatedFlagConfig =
86114 '{"flags":{"test":{"state":"ENABLED","variants":{"on":true,"off":false},"defaultVariant":"off"}}}' ;
87115 const reconnectFlagConfig =
88116 '{"flags":{"test":{"state":"ENABLED","variants":{"on":true,"off":false},"defaultVariant":"on"}}}' ;
89117
90- const fetch = new GrpcFetch ( cfg , serviceMock ) ;
118+ const fetch = new GrpcFetch ( cfg , jest . fn ( ) , serviceMock ) ;
91119 fetch
92120 . connect ( dataCallback , reconnectCallback , changedCallback , disconnectCallback )
93121 . then ( ( ) => {
@@ -128,7 +156,7 @@ describe('grpc fetch', () => {
128156 } ) ;
129157
130158 it ( 'should handle error and watch channel for reconnect' , ( done ) => {
131- const fetch = new GrpcFetch ( cfg , serviceMock ) ;
159+ const fetch = new GrpcFetch ( cfg , jest . fn ( ) , serviceMock ) ;
132160 fetch . connect ( jest . fn ( ) , jest . fn ( ) , jest . fn ( ) , disconnectCallback ) . catch ( ( err ) => {
133161 try {
134162 expect ( err ) . toBeInstanceOf ( Error ) ;
0 commit comments