Coverage for app/backend/src/tests/fixtures/feature_flags.py: 90%

21 statements  

« prev     ^ index     » next       coverage.py v7.17.2, created at 2026-11-09 14:50 +0000

1from typing import Any 

2 

3 

4class Flags: 

5 """Test handle for setting feature flag values in file-override mode; see the `flags` fixture.""" 

6 

7 def __init__(self, values: dict[str, Any]) -> None: 

8 self._values = values 

9 

10 def set_boolean(self, key: str, value: bool) -> None: 

11 self._values[key] = value 

12 

13 def set_string(self, key: str, value: str) -> None: 

14 self._values[key] = value 

15 

16 def set_integer(self, key: str, value: int) -> None: 

17 self._values[key] = value 

18 

19 def set_float(self, key: str, value: float) -> None: 

20 self._values[key] = value 

21 

22 def set_object(self, key: str, value: Any) -> None: 

23 self._values[key] = value 

24 

25 

26class FeatureFlags: 

27 """Test handle for controlling feature flag values; see the `feature_flags` fixture.""" 

28 

29 def __init__(self, features: dict[str, Any]) -> None: 

30 self._features = features 

31 

32 def set(self, key: str, value: Any) -> None: 

33 """Make `key` resolve to `value` for every user (logged in or anonymous).""" 

34 self._features[key] = {"defaultValue": value} 

35 

36 def set_definition(self, key: str, definition: dict[str, Any]) -> None: 

37 """Set a raw GrowthBook feature definition, for exercising rollouts/experiments.""" 

38 self._features[key] = definition