@@ -52,7 +52,7 @@ describe("feature manager", () => {
5252 expect ( featureFlags [ 1 ] ) . to . eq ( "Beta" ) ;
5353 } ) ;
5454
55- it ( "should fail when feature flag is invalid" , async ( ) => {
55+ it ( "should fail when feature flag id is invalid" , async ( ) => {
5656 const dataSource = new Map ( ) ;
5757 dataSource . set ( "feature_management" , {
5858 feature_flags : [
@@ -111,7 +111,7 @@ describe("feature manager", () => {
111111 ] ) ;
112112 } ) ;
113113
114- it ( "should evaluate features with conditions " , ( ) => {
114+ it ( "should fail when feature flag is invalid " , ( ) => {
115115 const dataSource = new Map ( ) ;
116116 dataSource . set ( "feature_management" , {
117117 feature_flags : [
@@ -178,6 +178,74 @@ describe("feature manager", () => {
178178 ] ) ;
179179 } ) ;
180180
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+
182250 it ( "should override default filters with custom filters" ) ;
183251} ) ;
0 commit comments