@@ -13,8 +13,12 @@ const { config, barrenConfig } = testData
1313
1414import moment from 'moment'
1515import * as uuid from 'uuid'
16- import { BucketedUserConfig , SDKVariable } from '../../assembly/types'
16+ import {
17+ BucketedUserConfig ,
18+ SDKVariable ,
19+ } from '@devcycle/types'
1720import { cleanupSDK , initSDK } from '../setPlatformData'
21+ import { variableForUserPB , VariableForUserArgs } from '../protobufVariableHelper'
1822
1923type BoundedHash = { rolloutHash : number , bucketingHash : number }
2024
@@ -54,10 +58,25 @@ const generateBucketedConfig = (user: unknown): BucketedUserConfig => {
5458 return JSON . parse ( bucketedConfig ) as BucketedUserConfig
5559}
5660
57- const variableForUser = (
58- { user, variableKey, variableType } :
59- { user : unknown , variableKey : string , variableType : VariableType }
60- ) : SDKVariable | null => {
61+ const expectVariableForUser = (
62+ args : { user : any , variableKey : string , variableType : VariableType } ,
63+ expectedValue : unknown
64+ ) => {
65+ const variable = variableForUser ( { ...args , sdkKey } )
66+ const pbVariable = variableForUserPB ( { ...args , sdkKey } )
67+
68+ if ( expectedValue === null ) {
69+ expect ( variable ) . toBeNull ( )
70+ expect ( pbVariable ) . toBeNull ( )
71+ } else {
72+ expect ( variable ) . not . toBeNull ( )
73+ expect ( variable ) . toEqual ( expectedValue )
74+ expect ( pbVariable ) . not . toBeNull ( )
75+ expect ( pbVariable ) . toEqual ( expectedValue )
76+ }
77+ }
78+
79+ const variableForUser = ( { user, variableKey, variableType } : VariableForUserArgs ) : SDKVariable | null => {
6180 const variableJSON = variableForUser_AS (
6281 sdkKey , JSON . stringify ( user ) , variableKey , variableType , true
6382 )
@@ -222,8 +241,10 @@ describe('Config Parsing and Generating', () => {
222241 const c = generateBucketedConfig ( user )
223242 expect ( c ) . toEqual ( expected )
224243
225- expect ( variableForUser ( { user, variableKey : 'swagTest' , variableType : VariableType . String } ) )
226- . toEqual ( expected . variables . swagTest )
244+ expectVariableForUser (
245+ { user, variableKey : 'swagTest' , variableType : VariableType . String } ,
246+ expected . variables . swagTest
247+ )
227248 } )
228249
229250 it ( 'puts the user in the target for the first audience they match' , ( ) => {
@@ -372,16 +393,26 @@ describe('Config Parsing and Generating', () => {
372393 const c = generateBucketedConfig ( user )
373394 expect ( c ) . toEqual ( expected )
374395
375- expect ( variableForUser ( { user, variableKey : 'audience-match' , variableType : VariableType . String } ) )
376- . toEqual ( expected . variables [ 'audience-match' ] )
377- expect ( variableForUser ( { user, variableKey : 'feature2.cool' , variableType : VariableType . String } ) )
378- . toEqual ( expected . variables [ 'feature2.cool' ] )
379- expect ( variableForUser ( { user, variableKey : 'feature2.hello' , variableType : VariableType . String } ) )
380- . toEqual ( expected . variables [ 'feature2.hello' ] )
381- expect ( variableForUser ( { user, variableKey : 'swagTest' , variableType : VariableType . String } ) )
382- . toEqual ( expected . variables [ 'swagTest' ] )
383- expect ( variableForUser ( { user, variableKey : 'test' , variableType : VariableType . String } ) )
384- . toEqual ( expected . variables [ 'test' ] )
396+ expectVariableForUser (
397+ { user, variableKey : 'audience-match' , variableType : VariableType . String } ,
398+ expected . variables [ 'audience-match' ]
399+ )
400+ expectVariableForUser (
401+ { user, variableKey : 'feature2.cool' , variableType : VariableType . String } ,
402+ expected . variables [ 'feature2.cool' ]
403+ )
404+ expectVariableForUser (
405+ { user, variableKey : 'feature2.hello' , variableType : VariableType . String } ,
406+ expected . variables [ 'feature2.hello' ]
407+ )
408+ expectVariableForUser (
409+ { user, variableKey : 'swagTest' , variableType : VariableType . String } ,
410+ expected . variables [ 'swagTest' ]
411+ )
412+ expectVariableForUser (
413+ { user, variableKey : 'test' , variableType : VariableType . String } ,
414+ expected . variables [ 'test' ]
415+ )
385416 } )
386417
387418 it ( 'holds user back if not in rollout' , ( ) => {
@@ -439,11 +470,14 @@ describe('Config Parsing and Generating', () => {
439470 }
440471 }
441472 initSDK ( sdkKey , config )
473+
442474 const c = generateBucketedConfig ( user )
443475 expect ( c ) . toEqual ( expected )
444476
445- expect ( variableForUser ( { user, variableKey : 'feature2Var' , variableType : VariableType . String } ) )
446- . toEqual ( expected . variables [ 'feature2Var' ] )
477+ expectVariableForUser (
478+ { user, variableKey : 'feature2Var' , variableType : VariableType . String } ,
479+ expected . variables [ 'feature2Var' ]
480+ )
447481 } )
448482
449483 it ( 'puts user through if in rollout' , ( ) => {
@@ -551,10 +585,14 @@ describe('Config Parsing and Generating', () => {
551585 const c = generateBucketedConfig ( user )
552586 expect ( c ) . toEqual ( expected )
553587
554- expect ( variableForUser ( { user, variableKey : 'swagTest' , variableType : VariableType . String } ) )
555- . toEqual ( expected . variables [ 'swagTest' ] )
556- expect ( variableForUser ( { user, variableKey : 'feature2Var' , variableType : VariableType . String } ) )
557- . toEqual ( expected . variables [ 'feature2Var' ] )
588+ expectVariableForUser (
589+ { user, variableKey : 'swagTest' , variableType : VariableType . String } ,
590+ expected . variables [ 'swagTest' ]
591+ )
592+ expectVariableForUser (
593+ { user, variableKey : 'feature2Var' , variableType : VariableType . String } ,
594+ expected . variables [ 'feature2Var' ]
595+ )
558596 } )
559597
560598 it ( 'errors when feature missing distribution' , ( ) => {
@@ -567,8 +605,7 @@ describe('Config Parsing and Generating', () => {
567605 expect ( ( ) => generateBucketedConfig ( user ) )
568606 . toThrow ( 'Failed to decide target variation: 61536f3bc838a705c105eb62' )
569607
570- expect ( variableForUser ( { user, variableKey : 'feature2Var' , variableType : VariableType . String } ) )
571- . toBeNull ( )
608+ expectVariableForUser ( { user, variableKey : 'feature2Var' , variableType : VariableType . String } , null )
572609 } )
573610
574611 it ( 'errors when config missing variations' , ( ) => {
@@ -591,8 +628,7 @@ describe('Config Parsing and Generating', () => {
591628 expect ( ( ) => generateBucketedConfig ( user ) )
592629 . toThrow ( 'Config missing variation: 615382338424cb11646d7667' )
593630
594- expect ( variableForUser ( { user, variableKey : 'feature2Var' , variableType : VariableType . String } ) )
595- . toBeNull ( )
631+ expectVariableForUser ( { user, variableKey : 'feature2Var' , variableType : VariableType . String } , null )
596632 } )
597633
598634 it ( 'errors when config missing variables' , ( ) => {
@@ -605,8 +641,7 @@ describe('Config Parsing and Generating', () => {
605641 expect ( ( ) => generateBucketedConfig ( user ) )
606642 . toThrow ( 'Config missing variable: 61538237b0a70b58ae6af71g' )
607643
608- expect ( variableForUser ( { user, variableKey : 'feature2.cool' , variableType : VariableType . String } ) )
609- . toBeNull ( )
644+ expectVariableForUser ( { user, variableKey : 'feature2.cool' , variableType : VariableType . String } , null )
610645 } )
611646} )
612647
0 commit comments