-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathtest_fallback.py
More file actions
63 lines (48 loc) · 3.2 KB
/
test_fallback.py
File metadata and controls
63 lines (48 loc) · 3.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
from splitio.models.fallback_treatment import FallbackTreatment
from splitio.models.fallback_config import FallbackTreatmentsConfiguration, FallbackTreatmentCalculator
class FallbackTreatmentModelTests(object):
"""Fallback treatment model tests."""
def test_working(self):
fallback_treatment = FallbackTreatment("on", '{"prop": "val"}')
assert fallback_treatment.config == '{"prop": "val"}'
assert fallback_treatment.treatment == 'on'
fallback_treatment = FallbackTreatment("off")
assert fallback_treatment.config == None
assert fallback_treatment.treatment == 'off'
class FallbackTreatmentsConfigModelTests(object):
"""Fallback treatment configuration model tests."""
def test_working(self):
global_fb = FallbackTreatment("on")
flag_fb = FallbackTreatment("off")
fallback_config = FallbackTreatmentsConfiguration(global_fb, {"flag1": flag_fb})
assert fallback_config.global_fallback_treatment == global_fb
assert fallback_config.by_flag_fallback_treatment == {"flag1": flag_fb}
fallback_config.global_fallback_treatment = None
assert fallback_config.global_fallback_treatment == None
fallback_config.by_flag_fallback_treatment["flag2"] = flag_fb
assert fallback_config.by_flag_fallback_treatment == {"flag1": flag_fb, "flag2": flag_fb}
fallback_config = FallbackTreatmentsConfiguration("on", {"flag1": "off"})
assert isinstance(fallback_config.global_fallback_treatment, FallbackTreatment)
assert fallback_config.global_fallback_treatment.treatment == "on"
assert isinstance(fallback_config.by_flag_fallback_treatment["flag1"], FallbackTreatment)
assert fallback_config.by_flag_fallback_treatment["flag1"].treatment == "off"
class FallbackTreatmentCalculatorTests(object):
"""Fallback treatment calculator model tests."""
def test_working(self):
fallback_config = FallbackTreatmentsConfiguration(FallbackTreatment("on" ,"{}"), None)
fallback_calculator = FallbackTreatmentCalculator(fallback_config)
assert fallback_calculator.fallback_treatments_configuration == fallback_config
assert fallback_calculator._label_prefix == "fallback - "
fallback_treatment = fallback_calculator.resolve("feature", "not ready")
assert fallback_treatment.treatment == "on"
assert fallback_treatment.label == "fallback - not ready"
assert fallback_treatment.config == "{}"
fallback_calculator._fallback_treatments_configuration = FallbackTreatmentsConfiguration(FallbackTreatment("on" ,"{}"), {'feature': FallbackTreatment("off" , '{"prop": "val"}')})
fallback_treatment = fallback_calculator.resolve("feature", "not ready")
assert fallback_treatment.treatment == "off"
assert fallback_treatment.label == "fallback - not ready"
assert fallback_treatment.config == '{"prop": "val"}'
fallback_treatment = fallback_calculator.resolve("feature2", "not ready")
assert fallback_treatment.treatment == "on"
assert fallback_treatment.label == "fallback - not ready"
assert fallback_treatment.config == "{}"