1+ package dtos
2+
3+ import (
4+ "testing"
5+
6+ "github.com/stretchr/testify/assert"
7+ )
8+
9+ func TestFallbackTreatmentCalculatorResolve (t * testing.T ) {
10+ // Initial setup with both global and flag-specific treatments
11+ config := & FallbackTreatmentConfig {
12+ GlobalFallbackTreatment : & FallbackTreatment {
13+ Treatment : "global_treatment" ,
14+ Config : "global_config" ,
15+ },
16+ byFlagFallbackTreatment : map [string ]FallbackTreatment {
17+ "flag1" : {
18+ Treatment : "flag1_treatment" ,
19+ Config : "flag1_config" ,
20+ },
21+ },
22+ }
23+ calc := NewFallbackTreatmentCalculatorImp (config )
24+
25+ // Test flag-specific treatment with label
26+ label := "some_label"
27+ result := calc .Resolve ("flag1" , & label )
28+ assert .Equal (t , "flag1_treatment" , result .Treatment )
29+ assert .Equal (t , "flag1_config" , result .Config )
30+ assert .Equal (t , "fallback - some_label" , * result .Label )
31+
32+ // Test fallback to global treatment when flag not found
33+ result = calc .Resolve ("flag2" , & label )
34+ assert .Equal (t , "global_treatment" , result .Treatment )
35+ assert .Equal (t , "global_config" , result .Config )
36+ assert .Equal (t , "fallback - some_label" , * result .Label )
37+
38+ // Test nil label handling
39+ result = calc .Resolve ("flag1" , nil )
40+ assert .Equal (t , "flag1_treatment" , result .Treatment )
41+ assert .Equal (t , "flag1_config" , result .Config )
42+ assert .Nil (t , result .Label )
43+
44+ // Test default control when no config
45+ calcNoConfig := NewFallbackTreatmentCalculatorImp (nil )
46+ result = calcNoConfig .Resolve ("flag1" , & label )
47+ assert .Equal (t , "control" , result .Treatment )
48+ assert .Equal (t , "" , result .Config )
49+ assert .Equal (t , "some_label" , * result .Label )
50+
51+ // Test global treatment when no flag-specific treatments exist
52+ configGlobalOnly := & FallbackTreatmentConfig {
53+ GlobalFallbackTreatment : & FallbackTreatment {
54+ Treatment : "global_treatment" ,
55+ Config : "global_config" ,
56+ },
57+ }
58+ calcGlobalOnly := NewFallbackTreatmentCalculatorImp (configGlobalOnly )
59+ result = calcGlobalOnly .Resolve ("any_flag" , & label )
60+ assert .Equal (t , "global_treatment" , result .Treatment )
61+ assert .Equal (t , "global_config" , result .Config )
62+ assert .Equal (t , "fallback - some_label" , * result .Label )
63+ }
0 commit comments