Skip to content

Commit 00794c6

Browse files
add testcases & remove unused code (#94)
1 parent 3ced7af commit 00794c6

File tree

4 files changed

+309
-552
lines changed

4 files changed

+309
-552
lines changed

src/feature-management/test/featureManager.test.ts

Lines changed: 71 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)