@@ -52,7 +52,7 @@ describe("feature manager", () => {
52
52
expect ( featureFlags [ 1 ] ) . to . eq ( "Beta" ) ;
53
53
} ) ;
54
54
55
- it ( "should fail when feature flag is invalid" , async ( ) => {
55
+ it ( "should fail when feature flag id is invalid" , async ( ) => {
56
56
const dataSource = new Map ( ) ;
57
57
dataSource . set ( "feature_management" , {
58
58
feature_flags : [
@@ -111,7 +111,7 @@ describe("feature manager", () => {
111
111
] ) ;
112
112
} ) ;
113
113
114
- it ( "should evaluate features with conditions " , ( ) => {
114
+ it ( "should fail when feature flag is invalid " , ( ) => {
115
115
const dataSource = new Map ( ) ;
116
116
dataSource . set ( "feature_management" , {
117
117
feature_flags : [
@@ -178,6 +178,74 @@ describe("feature manager", () => {
178
178
] ) ;
179
179
} ) ;
180
180
181
- it ( "should evaluate features with conditions" ) ;
181
+ it ( "should evaluate client filters based on requirement type" , ( ) => {
182
+ const jsonObject = {
183
+ "feature_management" : {
184
+ "feature_flags" : [
185
+ {
186
+ "id" : "AllFeature" ,
187
+ "enabled" : true ,
188
+ "conditions" : {
189
+ "requirement_type" : "All" ,
190
+ "client_filters" : [
191
+ {
192
+ "name" : "Microsoft.TimeWindow" ,
193
+ "parameters" : {
194
+ "Start" : "Tue, 4 Feb 2025 16:00:00 GMT"
195
+ }
196
+ } ,
197
+ {
198
+ "name" : "Microsoft.Targeting" ,
199
+ "parameters" : {
200
+ "Audience" : {
201
+ "Users" : [ "Alice" ] ,
202
+ "Exclusion" : {
203
+ "Users" : [ "Dave" ]
204
+ }
205
+ }
206
+ }
207
+ }
208
+ ]
209
+ }
210
+ } ,
211
+ {
212
+ "id" : "AnyFeature" ,
213
+ "enabled" : true ,
214
+ "conditions" : {
215
+ // "requirement_type": "Any",
216
+ "client_filters" : [
217
+ {
218
+ "name" : "Microsoft.TimeWindow" ,
219
+ "parameters" : {
220
+ "Start" : "Tue, 4 Feb 2025 16:00:00 GMT"
221
+ }
222
+ } ,
223
+ {
224
+ "name" : "Microsoft.Targeting" ,
225
+ "parameters" : {
226
+ "Audience" : {
227
+ "Users" : [ "Alice" ] ,
228
+ "Exclusion" : {
229
+ "Users" : [ "Dave" ]
230
+ }
231
+ }
232
+ }
233
+ }
234
+ ]
235
+ }
236
+ }
237
+ ]
238
+ }
239
+ } ;
240
+
241
+ const provider = new ConfigurationObjectFeatureFlagProvider ( jsonObject ) ;
242
+ const featureManager = new FeatureManager ( provider ) ;
243
+ return Promise . all ( [
244
+ expect ( featureManager . isEnabled ( "AllFeature" , { userId : "Alice" } ) ) . eventually . eq ( true ) ,
245
+ expect ( featureManager . isEnabled ( "AllFeature" , { userId : "Dave" } ) ) . eventually . eq ( false ) ,
246
+ expect ( featureManager . isEnabled ( "AnyFeature" , { userId : "Dave" } ) ) . eventually . eq ( true )
247
+ ] ) ;
248
+ } ) ;
249
+
182
250
it ( "should override default filters with custom filters" ) ;
183
251
} ) ;
0 commit comments