@@ -55,7 +55,62 @@ const mockedKVs = [{
5555 createMockedFeatureFlag ( "Alpha_1" , { enabled : true } ) ,
5656 createMockedFeatureFlag ( "Alpha_2" , { enabled : false } ) ,
5757 createMockedFeatureFlag ( "Telemetry_1" , { enabled : true , telemetry : { enabled : true } } , { etag : "ETag" } ) ,
58- createMockedFeatureFlag ( "Telemetry_2" , { enabled : true , telemetry : { enabled : true } } , { etag : "ETag" , label : "Test" } )
58+ createMockedFeatureFlag ( "Telemetry_2" , { enabled : true , telemetry : { enabled : true } } , { etag : "ETag" , label : "Test" } ) ,
59+ createMockedFeatureFlag ( "NoPercentileAndSeed" , {
60+ enabled : true ,
61+ telemetry : { enabled : true } ,
62+ variants : [ { name : "Control" } , { name : "Test" } ] ,
63+ allocation : {
64+ default_when_disabled : "Control" ,
65+ user : [ { users : [ "Jeff" ] , variant : "Test" } ]
66+ }
67+ } ) ,
68+ createMockedFeatureFlag ( "SeedOnly" , {
69+ enabled : true ,
70+ telemetry : { enabled : true } ,
71+ variants : [ { name : "Control" } , { name : "Test" } ] ,
72+ allocation : {
73+ default_when_disabled : "Control" ,
74+ user : [ { users : [ "Jeff" ] , variant : "Test" } ] ,
75+ seed : "123"
76+ }
77+ } ) ,
78+ createMockedFeatureFlag ( "DefaultWhenEnabledOnly" , {
79+ enabled : true ,
80+ telemetry : { enabled : true } ,
81+ variants : [ { name : "Control" } , { name : "Test" } ] ,
82+ allocation : {
83+ default_when_enabled : "Control"
84+ }
85+ } ) ,
86+ createMockedFeatureFlag ( "PercentileOnly" , {
87+ enabled : true ,
88+ telemetry : { enabled : true } ,
89+ variants : [ ] ,
90+ allocation : {
91+ percentile : [ { from : 0 , to : 50 , variant : "Control" } , { from : 50 , to : 100 , variant : "Test" } ]
92+ }
93+ } ) ,
94+ createMockedFeatureFlag ( "SimpleConfigurationValue" , {
95+ enabled : true ,
96+ telemetry : { enabled : true } ,
97+ variants : [ { name : "Control" , configuration_value : "standard" } , { name : "Test" , configuration_value : "special" } ] ,
98+ allocation : {
99+ default_when_enabled : "Control" ,
100+ percentile : [ { from : 0 , to : 50 , variant : "Control" } , { from : 50 , to : 100 , variant : "Test" } ] ,
101+ seed : "123"
102+ }
103+ } ) ,
104+ createMockedFeatureFlag ( "ComplexConfigurationValue" , {
105+ enabled : true ,
106+ telemetry : { enabled : true } ,
107+ variants : [ { name : "Control" , configuration_value : { title : { size : 100 , color : "red" } , options : [ 1 , 2 , 3 ] } } , { name : "Test" , configuration_value : { title : { size : 200 , color : "blue" } , options : [ "1" , "2" , "3" ] } } ] ,
108+ allocation : {
109+ default_when_enabled : "Control" ,
110+ percentile : [ { from : 0 , to : 50 , variant : "Control" } , { from : 50 , to : 100 , variant : "Test" } ] ,
111+ seed : "123"
112+ }
113+ } ) ,
59114] ) ;
60115
61116describe ( "feature flags" , function ( ) {
@@ -200,4 +255,56 @@ describe("feature flags", function () {
200255 expect ( featureFlag . telemetry . metadata . FeatureFlagId ) . equals ( "Rc8Am7HIGDT7HC5Ovs3wKN_aGaaK_Uz1mH2e11gaK0o" ) ;
201256 expect ( featureFlag . telemetry . metadata . FeatureFlagReference ) . equals ( `${ createMockedEndpoint ( ) } /kv/.appconfig.featureflag/Telemetry_2?label=Test` ) ;
202257 } ) ;
258+
259+ it ( "should not populate allocation id" , async ( ) => {
260+ const connectionString = createMockedConnectionString ( ) ;
261+ const settings = await load ( connectionString , {
262+ featureFlagOptions : {
263+ enabled : true ,
264+ selectors : [ { keyFilter : "*" } ]
265+ }
266+ } ) ;
267+ expect ( settings ) . not . undefined ;
268+ expect ( settings . get ( "feature_management" ) ) . not . undefined ;
269+ const featureFlags = settings . get < any > ( "feature_management" ) . feature_flags ;
270+ expect ( featureFlags ) . not . undefined ;
271+
272+ const NoPercentileAndSeed = ( featureFlags as any [ ] ) . find ( item => item . id === "NoPercentileAndSeed" ) ;
273+ expect ( NoPercentileAndSeed ) . not . undefined ;
274+ expect ( NoPercentileAndSeed ?. telemetry . metadata . AllocationId ) . to . be . undefined ;
275+ } ) ;
276+
277+ it ( "should populate allocation id" , async ( ) => {
278+ const connectionString = createMockedConnectionString ( ) ;
279+ const settings = await load ( connectionString , {
280+ featureFlagOptions : {
281+ enabled : true ,
282+ selectors : [ { keyFilter : "*" } ]
283+ }
284+ } ) ;
285+ expect ( settings ) . not . undefined ;
286+ expect ( settings . get ( "feature_management" ) ) . not . undefined ;
287+ const featureFlags = settings . get < any > ( "feature_management" ) . feature_flags ;
288+ expect ( featureFlags ) . not . undefined ;
289+
290+ const SeedOnly = ( featureFlags as any [ ] ) . find ( item => item . id === "SeedOnly" ) ;
291+ expect ( SeedOnly ) . not . undefined ;
292+ expect ( SeedOnly ?. telemetry . metadata . AllocationId ) . equals ( "qZApcKdfXscxpgn_8CMf" ) ;
293+
294+ const DefaultWhenEnabledOnly = ( featureFlags as any [ ] ) . find ( item => item . id === "DefaultWhenEnabledOnly" ) ;
295+ expect ( DefaultWhenEnabledOnly ) . not . undefined ;
296+ expect ( DefaultWhenEnabledOnly ?. telemetry . metadata . AllocationId ) . equals ( "k486zJjud_HkKaL1C4qB" ) ;
297+
298+ const PercentileOnly = ( featureFlags as any [ ] ) . find ( item => item . id === "PercentileOnly" ) ;
299+ expect ( PercentileOnly ) . not . undefined ;
300+ expect ( PercentileOnly ?. telemetry . metadata . AllocationId ) . equals ( "5YUbmP0P5s47zagO_LvI" ) ;
301+
302+ const SimpleConfigurationValue = ( featureFlags as any [ ] ) . find ( item => item . id === "SimpleConfigurationValue" ) ;
303+ expect ( SimpleConfigurationValue ) . not . undefined ;
304+ expect ( SimpleConfigurationValue ?. telemetry . metadata . AllocationId ) . equals ( "QIOEOTQJr2AXo4dkFFqy" ) ;
305+
306+ const ComplexConfigurationValue = ( featureFlags as any [ ] ) . find ( item => item . id === "ComplexConfigurationValue" ) ;
307+ expect ( ComplexConfigurationValue ) . not . undefined ;
308+ expect ( ComplexConfigurationValue ?. telemetry . metadata . AllocationId ) . equals ( "72A0b4sZ5HSAtaQxFe73" ) ;
309+ } ) ;
203310} ) ;
0 commit comments