@@ -70,7 +70,7 @@ const getOptlyInstance = ({ datafileObj, defaultDecideOptions }: GetOptlyInstanc
7070
7171describe ( 'OptimizelyUserContext' , ( ) => {
7272 const userId = 'tester' ;
73- const options = [ 'fakeOption' ] ;
73+ const options = [ OptimizelyDecideOption . IGNORE_CMAB_CACHE ] ;
7474
7575 describe ( 'setAttribute' , ( ) => {
7676 let fakeOptimizely : any ;
@@ -208,12 +208,37 @@ describe('OptimizelyUserContext', () => {
208208 optimizely : fakeOptimizely ,
209209 userId,
210210 } ) ;
211- const decision = user . decide ( flagKey , options as any ) ;
211+ const decision = user . decide ( flagKey , options ) ;
212212 expect ( fakeOptimizely . decide ) . toHaveBeenCalledWith ( user , flagKey , options ) ;
213213 expect ( decision ) . toEqual ( fakeDecision ) ;
214214 } ) ;
215215 } ) ;
216216
217+ describe ( 'decideAsync' , ( ) => {
218+ it ( 'should return an expected decision object' , async ( ) => {
219+ const flagKey = 'feature_1' ;
220+ const fakeDecision = {
221+ variationKey : 'variation_with_traffic' ,
222+ enabled : true ,
223+ variables : { } ,
224+ ruleKey : 'exp_no_audience' ,
225+ flagKey : flagKey ,
226+ userContext : 'fakeUserContext' ,
227+ reasons : [ ] ,
228+ } ;
229+ const fakeOptimizely : any = {
230+ decideAsync : vi . fn ( ) . mockResolvedValue ( fakeDecision ) ,
231+ } ;
232+ const user = new OptimizelyUserContext ( {
233+ optimizely : fakeOptimizely ,
234+ userId,
235+ } ) ;
236+ const decision = await user . decideAsync ( flagKey , options ) ;
237+ expect ( fakeOptimizely . decideAsync ) . toHaveBeenCalledWith ( user , flagKey , options ) ;
238+ expect ( decision ) . toEqual ( fakeDecision ) ;
239+ } ) ;
240+ } ) ;
241+
217242 describe ( 'decideForKeys' , ( ) => {
218243 it ( 'should return an expected decision results object' , ( ) => {
219244 const flagKey1 = 'feature_1' ;
@@ -245,12 +270,49 @@ describe('OptimizelyUserContext', () => {
245270 optimizely : fakeOptimizely ,
246271 userId,
247272 } ) ;
248- const decisionMap = user . decideForKeys ( [ flagKey1 , flagKey2 ] , options as any ) ;
273+ const decisionMap = user . decideForKeys ( [ flagKey1 , flagKey2 ] , options ) ;
249274 expect ( fakeOptimizely . decideForKeys ) . toHaveBeenCalledWith ( user , [ flagKey1 , flagKey2 ] , options ) ;
250275 expect ( decisionMap ) . toEqual ( fakeDecisionMap ) ;
251276 } ) ;
252277 } ) ;
253278
279+ describe ( 'decideForKeysAsync' , ( ) => {
280+ it ( 'should return an expected decision results object' , async ( ) => {
281+ const flagKey1 = 'feature_1' ;
282+ const flagKey2 = 'feature_2' ;
283+ const fakeDecisionMap = {
284+ flagKey1 : {
285+ variationKey : '18257766532' ,
286+ enabled : true ,
287+ variables : { } ,
288+ ruleKey : '18322080788' ,
289+ flagKey : flagKey1 ,
290+ userContext : 'fakeUserContext' ,
291+ reasons : [ ] ,
292+ } ,
293+ flagKey2 : {
294+ variationKey : 'variation_with_traffic' ,
295+ enabled : true ,
296+ variables : { } ,
297+ ruleKey : 'exp_no_audience' ,
298+ flagKey : flagKey2 ,
299+ userContext : 'fakeUserContext' ,
300+ reasons : [ ] ,
301+ } ,
302+ } ;
303+ const fakeOptimizely : any = {
304+ decideForKeysAsync : vi . fn ( ) . mockResolvedValue ( fakeDecisionMap ) ,
305+ } ;
306+ const user = new OptimizelyUserContext ( {
307+ optimizely : fakeOptimizely ,
308+ userId,
309+ } ) ;
310+ const decisionMap = await user . decideForKeysAsync ( [ flagKey1 , flagKey2 ] , options ) ;
311+ expect ( fakeOptimizely . decideForKeysAsync ) . toHaveBeenCalledWith ( user , [ flagKey1 , flagKey2 ] , options ) ;
312+ expect ( decisionMap ) . toEqual ( fakeDecisionMap ) ;
313+ } ) ;
314+ } ) ;
315+
254316 describe ( 'decideAll' , ( ) => {
255317 it ( 'should return an expected decision results object' , ( ) => {
256318 const flagKey1 = 'feature_1' ;
@@ -292,12 +354,59 @@ describe('OptimizelyUserContext', () => {
292354 optimizely : fakeOptimizely ,
293355 userId,
294356 } ) ;
295- const decisionMap = user . decideAll ( options as any ) ;
357+ const decisionMap = user . decideAll ( options ) ;
296358 expect ( fakeOptimizely . decideAll ) . toHaveBeenCalledWith ( user , options ) ;
297359 expect ( decisionMap ) . toEqual ( fakeDecisionMap ) ;
298360 } ) ;
299361 } ) ;
300362
363+ describe ( 'decideAllAsync' , ( ) => {
364+ it ( 'should return an expected decision results object' , async ( ) => {
365+ const flagKey1 = 'feature_1' ;
366+ const flagKey2 = 'feature_2' ;
367+ const flagKey3 = 'feature_3' ;
368+ const fakeDecisionMap : any = {
369+ flagKey1 : {
370+ variationKey : '18257766532' ,
371+ enabled : true ,
372+ variables : { } ,
373+ ruleKey : '18322080788' ,
374+ flagKey : flagKey1 ,
375+ userContext : 'fakeUserContext' ,
376+ reasons : [ ] ,
377+ } ,
378+ flagKey2 : {
379+ variationKey : 'variation_with_traffic' ,
380+ enabled : true ,
381+ variables : { } ,
382+ ruleKey : 'exp_no_audience' ,
383+ flagKey : flagKey2 ,
384+ userContext : 'fakeUserContext' ,
385+ reasons : [ ] ,
386+ } ,
387+ flagKey3 : {
388+ variationKey : '' ,
389+ enabled : false ,
390+ variables : { } ,
391+ ruleKey : '' ,
392+ flagKey : flagKey3 ,
393+ userContext : undefined ,
394+ reasons : [ ] ,
395+ } ,
396+ } ;
397+ const fakeOptimizely : any = {
398+ decideAllAsync : vi . fn ( ) . mockResolvedValue ( fakeDecisionMap ) ,
399+ } ;
400+ const user = new OptimizelyUserContext ( {
401+ optimizely : fakeOptimizely ,
402+ userId,
403+ } ) ;
404+ const decisionMap = await user . decideAllAsync ( options ) ;
405+ expect ( fakeOptimizely . decideAllAsync ) . toHaveBeenCalledWith ( user , options ) ;
406+ expect ( decisionMap ) . toEqual ( fakeDecisionMap ) ;
407+ } ) ;
408+ } ) ;
409+
301410 describe ( 'trackEvent' , ( ) => {
302411 it ( 'should call track from optimizely client' , ( ) => {
303412 const fakeOptimizely : any = {
@@ -393,7 +502,7 @@ describe('OptimizelyUserContext', () => {
393502 } ) ;
394503
395504 user . setForcedDecision ( { flagKey : flagKey , ruleKey } , { variationKey } ) ;
396- const decision = user . decide ( flagKey , options as any ) ;
505+ const decision = user . decide ( flagKey , options ) ;
397506
398507 expect ( decision . variationKey ) . toEqual ( variationKey ) ;
399508 expect ( decision . ruleKey ) . toEqual ( ruleKey ) ;
0 commit comments