UNPKG

hypertune

Version:

[Hypertune](https://www.hypertune.com/) is the most flexible platform for feature flags, A/B testing, analytics and app configuration. Built with full end-to-end type-safety, Git-style version control and local, synchronous, in-memory flag evaluation. Opt

65 lines (62 loc) 1.63 kB
import { expect, test } from "vitest"; import { Value } from "../shared/types"; import getOverrideFromOverridesList from "./getOverrideFromOverridesList"; const cases: { name: string; list: [flagPath: string, value: Value | null][]; expected: ReturnType<typeof getOverrideFromOverridesList>; }[] = [ { name: "null for empty list", list: [], expected: null, }, { name: "null overrides are ignored", list: [["simpleFlag", null]], expected: null, }, { name: "simple flag", list: [["simpleFlag", true]], expected: { root: { simpleFlag: true } }, }, { name: "nested flag", list: [["flags.ui.simpleFlag", true]], expected: { root: { flags: { ui: { simpleFlag: true } } } }, }, { name: "nested flag with root in path", list: [["root.flags.ui.simpleFlag", true]], expected: { root: { flags: { ui: { simpleFlag: true } } } }, }, { name: "multiple nested flags", list: [ ["flags.ui.simpleFlag", true], ["flags.ui.ignoredFlag", null], ["flags.ui.stringFlag", "Override string"], ], expected: { root: { flags: { ui: { simpleFlag: true, stringFlag: "Override string" } }, }, }, }, { name: "multiple nested flags at different levels", list: [ ["flags.ui.simpleFlag", true], ["flags.errorList", ["Override string"]], ], expected: { root: { flags: { ui: { simpleFlag: true }, errorList: ["Override string"] }, }, }, }, ]; test.each(cases)("$name", ({ list, expected }) => { expect(getOverrideFromOverridesList(list)).toEqual(expected); });