Skip to content

Commit c6aaf74

Browse files
committed
added tests to check unique name for providers passed
Signed-off-by: bbland1 <[email protected]>
1 parent 32af790 commit c6aaf74

File tree

1 file changed

+162
-2
lines changed

1 file changed

+162
-2
lines changed
Lines changed: 162 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,165 @@
11
package multiprovider
22

3-
import "testing"
3+
import (
4+
"testing"
45

5-
func TestNewMultiProvider(t *testing.T){}
6+
// "github.com/open-feature/go-sdk/openfeature"
7+
"github.com/open-feature/go-sdk/openfeature/hooks"
8+
"github.com/open-feature/go-sdk/openfeature/memprovider"
9+
oft "github.com/open-feature/go-sdk/openfeature/testing"
10+
)
11+
12+
func TestNewMultiProvider_ProviderMetadataUniqueNames(t *testing.T) {
13+
testProvider1 := memprovider.NewInMemoryProvider(map[string]memprovider.InMemoryFlag{
14+
"boolFlag": {
15+
Key: "boolFlag",
16+
State: memprovider.Enabled,
17+
DefaultVariant: "true",
18+
Variants: map[string]interface{}{
19+
"true": true,
20+
"false": false,
21+
},
22+
ContextEvaluator: nil,
23+
},
24+
})
25+
testProvider2 := oft.NewTestProvider()
26+
27+
defaultLogger, err := hooks.NewLoggingHook(false)
28+
if err != nil {
29+
t.Errorf("Issue setting up logger,'%s'", err)
30+
}
31+
32+
multiProvider, err := NewMultiProvider([]UniqueNameProvider{
33+
{
34+
Provider: testProvider1,
35+
}, {
36+
Provider: testProvider2,
37+
},
38+
}, "test", defaultLogger)
39+
40+
if err != nil {
41+
t.Errorf("Expected the multiprovider to successfully make an instance, '%s'", err)
42+
}
43+
44+
providerEntries := multiProvider.Providers()
45+
46+
if providerEntries[0].UniqueName != "InMemoryProvider" {
47+
t.Errorf("Expected unique provider name to be: 'InMemoryProvider', got: '%s'", providerEntries[0].UniqueName)
48+
}
49+
if providerEntries[1].UniqueName != "NoopProvider" {
50+
t.Errorf("Expected unique provider name to be: 'NoopProvider', got: '%s'", providerEntries[1].UniqueName)
51+
}
52+
53+
if len(providerEntries) != 2 {
54+
t.Errorf("Expected there to be 2 provider entries, got: '%d'", len(providerEntries))
55+
}
56+
}
57+
58+
func TestNewMultiProvider_DuplicateProviderGenerateUniqueNames(t *testing.T) {
59+
testProvider1 := memprovider.NewInMemoryProvider(map[string]memprovider.InMemoryFlag{
60+
"boolFlag": {
61+
Key: "boolFlag",
62+
State: memprovider.Enabled,
63+
DefaultVariant: "true",
64+
Variants: map[string]interface{}{
65+
"true": true,
66+
"false": false,
67+
},
68+
ContextEvaluator: nil,
69+
},
70+
})
71+
testProvider2 := oft.NewTestProvider()
72+
testProvider3 := oft.NewTestProvider()
73+
testProvider4 := oft.NewTestProvider()
74+
75+
defaultLogger, err := hooks.NewLoggingHook(false)
76+
if err != nil {
77+
t.Errorf("Issue setting up logger,'%s'", err)
78+
}
79+
80+
multiProvider, err := NewMultiProvider([]UniqueNameProvider{
81+
{
82+
Provider: testProvider1,
83+
}, {
84+
Provider: testProvider2,
85+
}, {
86+
Provider: testProvider3,
87+
},{
88+
Provider: testProvider4,
89+
},
90+
}, "test", defaultLogger)
91+
92+
if err != nil {
93+
t.Errorf("Expected the multiprovider to successfully make an instance, '%s'", err)
94+
}
95+
96+
providerEntries := multiProvider.Providers()
97+
98+
if providerEntries[0].UniqueName != "InMemoryProvider" {
99+
t.Errorf("Expected unique provider name to be: 'InMemoryProvider', got: '%s'", providerEntries[0].UniqueName)
100+
}
101+
if providerEntries[1].UniqueName != "NoopProvider-1" {
102+
t.Errorf("Expected unique provider name to be: 'NoopProvider', got: '%s'", providerEntries[1].UniqueName)
103+
}
104+
if providerEntries[2].UniqueName != "NoopProvider-2" {
105+
t.Errorf("Expected unique provider name to be: 'NoopProvider', got: '%s'", providerEntries[2].UniqueName)
106+
}
107+
if providerEntries[3].UniqueName != "NoopProvider-3" {
108+
t.Errorf("Expected unique provider name to be: 'NoopProvider', got: '%s'", providerEntries[3].UniqueName)
109+
}
110+
111+
if len(providerEntries) != 4 {
112+
t.Errorf("Expected there to be 4 provider entries, got: '%d'", len(providerEntries))
113+
}
114+
}
115+
func TestNewMultiProvider_(t *testing.T) {
116+
testProvider1 := memprovider.NewInMemoryProvider(map[string]memprovider.InMemoryFlag{
117+
"boolFlag": {
118+
Key: "boolFlag",
119+
State: memprovider.Enabled,
120+
DefaultVariant: "true",
121+
Variants: map[string]interface{}{
122+
"true": true,
123+
"false": false,
124+
},
125+
ContextEvaluator: nil,
126+
},
127+
})
128+
testProvider2 := oft.NewTestProvider()
129+
testProvider3 := oft.NewTestProvider()
130+
testProvider4 := oft.NewTestProvider()
131+
132+
defaultLogger, err := hooks.NewLoggingHook(false)
133+
if err != nil {
134+
t.Errorf("Issue setting up logger,'%s'", err)
135+
}
136+
137+
multiProvider, err := NewMultiProvider([]UniqueNameProvider{
138+
{
139+
Provider: testProvider1,
140+
}, {
141+
Provider: testProvider2,
142+
}, {
143+
Provider: testProvider3,
144+
},{
145+
Provider: testProvider4,
146+
},
147+
}, "test", defaultLogger)
148+
149+
if err != nil {
150+
t.Errorf("Expected the multiprovider to successfully make an instance, '%s'", err)
151+
}
152+
153+
if multiProvider.providersEntries[0].UniqueName != "InMemoryProvider" {
154+
t.Errorf("Expected unique provider name to be: 'InMemoryProvider', got: '%s'", multiProvider.providersEntries[0].UniqueName)
155+
}
156+
if multiProvider.providersEntries[1].UniqueName != "NoopProvider-1" {
157+
t.Errorf("Expected unique provider name to be: 'NoopProvider', got: '%s'", multiProvider.providersEntries[1].UniqueName)
158+
}
159+
if multiProvider.providersEntries[2].UniqueName != "NoopProvider-2" {
160+
t.Errorf("Expected unique provider name to be: 'NoopProvider', got: '%s'", multiProvider.providersEntries[2].UniqueName)
161+
}
162+
if multiProvider.providersEntries[3].UniqueName != "NoopProvider-3" {
163+
t.Errorf("Expected unique provider name to be: 'NoopProvider', got: '%s'", multiProvider.providersEntries[3].UniqueName)
164+
}
165+
}

0 commit comments

Comments
 (0)