@reliance/feature-flags
Version:
A package for determining feature flag status based on environment variables or flag objects.
57 lines (46 loc) • 2.06 kB
JavaScript
const { isFeatureEnabled, setFeature } = require("../src");
const features = {
newUI: (params) => params.isBetaUser === true,
adminDashboard: (params) => params.admin === true,
roleSpecific: (params) => {
return params.roles.includes("QA") || params.roles.includes("admin");
},
};
// Set up environment variables for testing
beforeAll(() => {
process.env.viewPrescription = "true";
process.env.anotherFeature = "false";
setFeature(features);
});
describe("isFeatureEnabled", () => {
test("should return true for newUI feature if isBetaUser is true", () => {
const betaUserParams = { isBetaUser: true };
expect(isFeatureEnabled("newUI", betaUserParams)).toBe(true);
});
test("should return false for newUI feature if isBetaUser is false", () => {
const betaUserParams = { isBetaUser: false };
expect(isFeatureEnabled("newUI", betaUserParams)).toBe(false);
});
test("should return true for adminDashboard feature if admin is true", () => {
const adminParams = { admin: true };
expect(isFeatureEnabled("adminDashboard", adminParams)).toBe(true);
});
test("should return false for adminDashboard feature if admin is false", () => {
const adminParams = { admin: false };
expect(isFeatureEnabled("adminDashboard", adminParams)).toBe(false);
});
test("should return true for roleSpecific feature if roles include QA or admin", () => {
const userRoles = { roles: ["admin", "QA"] };
expect(isFeatureEnabled("roleSpecific", userRoles)).toBe(true);
});
test("should return false for roleSpecific feature if roles do not include QA or admin", () => {
const userRoles = { roles: ["user"] };
expect(isFeatureEnabled("roleSpecific", userRoles)).toBe(false);
});
test("should return true for viewPrescription feature if it is set to true in environment variables", () => {
expect(isFeatureEnabled("viewPrescription")).toBe(true);
});
test("should return false for non-existing feature", () => {
expect(isFeatureEnabled("nonExistingFeature")).toBe(false);
});
});