Skip to content

Commit a3ba348

Browse files
committed
added test for getter methods of the struct provider entries
Signed-off-by: bbland1 <[email protected]>
1 parent d5f3d6a commit a3ba348

File tree

2 files changed

+202
-46
lines changed

2 files changed

+202
-46
lines changed

providers/multi-provider/pkg/providers.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@ func (mp *MultiProvider) Providers() []UniqueNameProvider {
5959
return mp.providersEntries
6060
}
6161

62-
func (mp *MultiProvider) ProvidersByName() []UniqueNameProvider {
63-
return mp.providersEntries
62+
func (mp *MultiProvider) ProvidersByName() map[string]UniqueNameProvider {
63+
return mp.providersEntriesByName
6464
}
6565

6666
func (mp *MultiProvider) ProviderByName(name string) (UniqueNameProvider, bool) {

providers/multi-provider/pkg/providers_test.go

+200-44
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,200 @@ import (
99
oft "github.com/open-feature/go-sdk/openfeature/testing"
1010
)
1111

12+
func TestMultiProvider_ProvidersMethod(t *testing.T) {
13+
testProvider1 := oft.NewTestProvider()
14+
testProvider2 := oft.NewTestProvider()
15+
16+
defaultLogger, err := hooks.NewLoggingHook(false)
17+
if err != nil {
18+
t.Errorf("Issue setting up logger,'%s'", err)
19+
}
20+
21+
mp, err := NewMultiProvider([]UniqueNameProvider{
22+
{
23+
Provider: testProvider1,
24+
UniqueName: "provider1",
25+
}, {
26+
Provider: testProvider2,
27+
UniqueName: "provider2",
28+
},
29+
}, "test", defaultLogger)
30+
31+
if err != nil {
32+
t.Errorf("Expected the multiprovider to successfully make an instance, '%s'", err)
33+
}
34+
35+
providers := mp.Providers()
36+
37+
if len(providers) != 2 {
38+
t.Errorf("Expected there to be '2' providers as passed but got: '%d'", len(providers))
39+
}
40+
41+
if providers[0].UniqueName != "provider1" {
42+
t.Errorf("Expected unique provider name to be: 'provider1', got: '%s'", providers[0].UniqueName)
43+
}
44+
if providers[1].UniqueName != "provider2" {
45+
t.Errorf("Expected unique provider name to be: 'provider2', got: '%s'", providers[1].UniqueName)
46+
}
47+
}
48+
49+
func TestMultiProvider_ProvidersByNamesMethod(t *testing.T) {
50+
testProvider1 := oft.NewTestProvider()
51+
testProvider2 := oft.NewTestProvider()
52+
53+
defaultLogger, err := hooks.NewLoggingHook(false)
54+
if err != nil {
55+
t.Errorf("Issue setting up logger,'%s'", err)
56+
}
57+
58+
mp, err := NewMultiProvider([]UniqueNameProvider{
59+
{
60+
Provider: testProvider1,
61+
UniqueName: "provider1",
62+
}, {
63+
Provider: testProvider2,
64+
UniqueName: "provider2",
65+
},
66+
}, "test", defaultLogger)
67+
68+
if err != nil {
69+
t.Errorf("Expected the multiprovider to successfully make an instance, '%s'", err)
70+
}
71+
72+
providers := mp.ProvidersByName()
73+
74+
if len(providers) != 2 {
75+
t.Errorf("Expected there to be '2' providers as passed but got: '%d'", len(providers))
76+
}
77+
78+
if provider, exists := providers["provider1"]; exists {
79+
if provider.UniqueName != "provider1" {
80+
t.Errorf("Expected unique provider name to be: 'provider1', got: '%s'", provider.UniqueName)
81+
}
82+
if provider.Provider != testProvider1 {
83+
t.Errorf("Expected unique provider name to be: 'provider1', got: '%s'", provider.UniqueName)
84+
}
85+
} else {
86+
t.Errorf("Expected there to be a provider with the key of '%s', but none was found.", "provider1")
87+
}
88+
89+
if provider, exists := providers["provider2"]; exists {
90+
if provider.UniqueName != "provider2" {
91+
t.Errorf("Expected unique provider name to be: 'provider2', got: '%s'", provider.UniqueName)
92+
}
93+
if provider.Provider != testProvider2 {
94+
t.Errorf("Expected unique provider name to be: 'provider2', got: '%s'", provider.UniqueName)
95+
}
96+
} else {
97+
t.Errorf("Expected there to be a provider with the key of '%s', but none was found.", "provider2")
98+
}
99+
100+
}
101+
102+
func TestMultiProvider_ProviderByNameMethod(t *testing.T) {
103+
testProvider1 := oft.NewTestProvider()
104+
testProvider2 := oft.NewTestProvider()
105+
106+
defaultLogger, err := hooks.NewLoggingHook(false)
107+
if err != nil {
108+
t.Errorf("Issue setting up logger,'%s'", err)
109+
}
110+
111+
mp, err := NewMultiProvider([]UniqueNameProvider{
112+
{
113+
Provider: testProvider1,
114+
UniqueName: "provider1",
115+
}, {
116+
Provider: testProvider2,
117+
UniqueName: "provider2",
118+
},
119+
}, "test", defaultLogger)
120+
121+
if err != nil {
122+
t.Errorf("Expected the multiprovider to successfully make an instance, '%s'", err)
123+
}
124+
125+
providers := mp.ProvidersByName()
126+
127+
if len(providers) != 2 {
128+
t.Errorf("Expected there to be '2' providers as passed but got: '%d'", len(providers))
129+
}
130+
if provider, exists := mp.ProviderByName("provider2"); exists {
131+
if provider.UniqueName != "provider2" {
132+
t.Errorf("Expected unique provider name to be: 'provider2', got: '%s'", provider.UniqueName)
133+
}
134+
if provider.Provider != testProvider2 {
135+
t.Errorf("Expected unique provider name to be: 'provider2', got: '%s'", provider.UniqueName)
136+
}
137+
} else {
138+
t.Errorf("Expected there to be a provider with the key of '%s', but none was found.", "provider1")
139+
}
140+
141+
}
142+
143+
// todo: currently the `multiProvider.Metadata()` just give the `Name` of the multi provider it doesn't aggregate the passed providers as stated in this specification https://openfeature.dev/specification/appendix-a/#metadata so this test fails
144+
func TestMultiProvider_MetaData(t *testing.T) {
145+
testProvider1 := oft.NewTestProvider()
146+
testProvider2 := oft.NewTestProvider()
147+
148+
defaultLogger, err := hooks.NewLoggingHook(false)
149+
if err != nil {
150+
t.Errorf("Issue setting up logger,'%s'", err)
151+
}
152+
153+
mp, err := NewMultiProvider([]UniqueNameProvider{
154+
{
155+
Provider: testProvider1,
156+
UniqueName: "provider1",
157+
}, {
158+
Provider: testProvider2,
159+
UniqueName: "provider2",
160+
},
161+
}, "test", defaultLogger)
162+
163+
if err != nil {
164+
t.Errorf("Expected the multiprovider to successfully make an instance, '%s'", err)
165+
}
166+
167+
expectedMetadata := MultiMetadata{
168+
Name: "multiprovider",
169+
OriginalMetadata: map[string]openfeature.Metadata{
170+
"provider1": openfeature.Metadata{Name: "NoopProvider"},
171+
"provider2": openfeature.Metadata{Name: "NoopProvider"},
172+
},
173+
}
174+
175+
if mp.Metadata().Name != "hi" {
176+
t.Errorf("Expected to see the aggregated metadata of all passed providers: '%s', got: '%s'", expectedMetadata, mp.Metadata().Name)
177+
}
178+
}
179+
180+
// func TestMultiProvider_Init(t *testing.T) {
181+
// testProvider1 := oft.NewTestProvider()
182+
// testProvider2 := oft.NewTestProvider()
183+
184+
// defaultLogger, err := hooks.NewLoggingHook(false)
185+
// if err != nil {
186+
// t.Errorf("Issue setting up logger,'%s'", err)
187+
// }
188+
189+
// mp, err := NewMultiProvider([]UniqueNameProvider{
190+
// {
191+
// Provider: testProvider1,
192+
// UniqueName: "provider1",
193+
// }, {
194+
// Provider: testProvider2,
195+
// UniqueName: "provider2",
196+
// },
197+
// }, "test", defaultLogger)
198+
199+
// if err != nil {
200+
// t.Errorf("Expected the multiprovider to successfully make an instance, '%s'", err)
201+
// }
202+
203+
// mp.Init()
204+
// }
205+
12206
func TestNewMultiProvider_ProviderUniqueNames(t *testing.T) {
13207
testProvider1 := memprovider.NewInMemoryProvider(map[string]memprovider.InMemoryFlag{
14208
"boolFlag": {
@@ -29,7 +223,7 @@ func TestNewMultiProvider_ProviderUniqueNames(t *testing.T) {
29223
t.Errorf("Issue setting up logger,'%s'", err)
30224
}
31225

32-
multiProvider, err := NewMultiProvider([]UniqueNameProvider{
226+
mp, err := NewMultiProvider([]UniqueNameProvider{
33227
{
34228
Provider: testProvider1,
35229
}, {
@@ -41,7 +235,7 @@ func TestNewMultiProvider_ProviderUniqueNames(t *testing.T) {
41235
t.Errorf("Expected the multiprovider to successfully make an instance, '%s'", err)
42236
}
43237

44-
providerEntries := multiProvider.Providers()
238+
providerEntries := mp.Providers()
45239

46240
if providerEntries[0].UniqueName != "InMemoryProvider" {
47241
t.Errorf("Expected unique provider name to be: 'InMemoryProvider', got: '%s'", providerEntries[0].UniqueName)
@@ -77,7 +271,7 @@ func TestNewMultiProvider_DuplicateProviderGenerateUniqueNames(t *testing.T) {
77271
t.Errorf("Issue setting up logger,'%s'", err)
78272
}
79273

80-
multiProvider, err := NewMultiProvider([]UniqueNameProvider{
274+
mp, err := NewMultiProvider([]UniqueNameProvider{
81275
{
82276
Provider: testProvider1,
83277
}, {
@@ -93,7 +287,7 @@ func TestNewMultiProvider_DuplicateProviderGenerateUniqueNames(t *testing.T) {
93287
t.Errorf("Expected the multiprovider to successfully make an instance, '%s'", err)
94288
}
95289

96-
providerEntries := multiProvider.Providers()
290+
providerEntries := mp.Providers()
97291

98292
if providerEntries[0].UniqueName != "InMemoryProvider" {
99293
t.Errorf("Expected unique provider name to be: 'InMemoryProvider', got: '%s'", providerEntries[0].UniqueName)
@@ -121,7 +315,7 @@ func TestNewMultiProvider_ProvidersUsePassedNames(t *testing.T) {
121315
t.Errorf("Issue setting up logger,'%s'", err)
122316
}
123317

124-
multiProvider, err := NewMultiProvider([]UniqueNameProvider{
318+
mp, err := NewMultiProvider([]UniqueNameProvider{
125319
{
126320
Provider: testProvider1,
127321
UniqueName: "theFirst",
@@ -135,7 +329,7 @@ func TestNewMultiProvider_ProvidersUsePassedNames(t *testing.T) {
135329
t.Errorf("Expected the multiprovider to successfully make an instance, '%s'", err)
136330
}
137331

138-
providerEntries := multiProvider.Providers()
332+
providerEntries := mp.Providers()
139333

140334
if providerEntries[0].UniqueName != "theFirst" {
141335
t.Errorf("Expected unique provider name to be: 'theFirst', got: '%s'", providerEntries[0].UniqueName)
@@ -176,41 +370,3 @@ func TestNewMultiProvider_ProvidersErrorNameNotUnique(t *testing.T) {
176370
t.Errorf("Expected the multiprovider to have an error of: '%s', got: '%s'", errUniqueName, err.Error())
177371
}
178372
}
179-
180-
// todo: currently the `multiProvider.Metadata()` just give the `Name` of the multi provider it doesn't aggregate the passed providers as stated in this specification https://openfeature.dev/specification/appendix-a/#metadata so this test fails
181-
func TestAggregatedMetaData(t *testing.T){
182-
testProvider1 := oft.NewTestProvider()
183-
testProvider2 := oft.NewTestProvider()
184-
185-
defaultLogger, err := hooks.NewLoggingHook(false)
186-
if err != nil {
187-
t.Errorf("Issue setting up logger,'%s'", err)
188-
}
189-
190-
multiProvider, err := NewMultiProvider([]UniqueNameProvider{
191-
{
192-
Provider: testProvider1,
193-
UniqueName: "provider1",
194-
}, {
195-
Provider: testProvider2,
196-
UniqueName: "provider2",
197-
},
198-
}, "test", defaultLogger)
199-
200-
if err != nil {
201-
t.Errorf("Expected the multiprovider to successfully make an instance, '%s'", err)
202-
}
203-
204-
expectedMetadata := MultiMetadata{
205-
Name: "multiprovider",
206-
OriginalMetadata: map[string]openfeature.Metadata{
207-
"provider1": openfeature.Metadata{Name:"NoopProvider"},
208-
"provider2": openfeature.Metadata{Name:"NoopProvider"},
209-
210-
},
211-
}
212-
213-
if multiProvider.Metadata().Name != "hi" {
214-
t.Errorf("Expected to see the aggregated metadata of all passed providers: '%s', got: '%s'", expectedMetadata, multiProvider.Metadata().Name)
215-
}
216-
}

0 commit comments

Comments
 (0)