Skip to content

Commit 02ccb79

Browse files
yasirfolio3Michael Ng
authored andcommitted
refact(featuremodel): Updated featuremodel variables from Array to Map. (#139)
1 parent 0e76d01 commit 02ccb79

File tree

8 files changed

+17
-22
lines changed

8 files changed

+17
-22
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ jobs:
3939
env: GIMME_GO_VERSION=1.8.x
4040
before_script:
4141
# GO module was not introduced earlier. need symlink to search in GOPATH
42-
- mkdir -p $GOPATH/src/github.com && pushd $GOPATH/src/github.com && ln -s $HOME/build/optimizely pkg && popd
42+
- mkdir -p $GOPATH/src/github.com && pushd $GOPATH/src/github.com && ln -s $HOME/build/optimizely optimizely && popd
4343
script:
4444
# Need to download packages explicitly
4545
- go get -v -d ./...

pkg/client/client.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ func (o *OptimizelyClient) GetAllFeatureVariables(featureKey string, userContext
248248
enabled = featureDecision.Variation.FeatureEnabled
249249
}
250250

251-
for _, v := range feature.Variables {
251+
for _, v := range feature.VariableMap {
252252
variableMap[v.Key] = v.DefaultValue
253253

254254
if enabled {

pkg/client/client_test.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1400,8 +1400,7 @@ func TestGetAllFeatureVariables(t *testing.T) {
14001400
Variations: map[string]entities.Variation{"22222": testVariation},
14011401
}
14021402
testFeature := getTestFeature(testFeatureKey, testExperiment)
1403-
testFeature.Variables = make([]entities.Variable, 1)
1404-
testFeature.Variables[0] = testVariable
1403+
testFeature.VariableMap = map[string]entities.Variable{testVariable.Key: testVariable}
14051404
mockConfig := getMockConfig(testFeatureKey, testVariableKey, testFeature, testVariable)
14061405
mockConfigManager := new(MockProjectConfigManager)
14071406
mockConfigManager.On("GetConfig").Return(mockConfig, nil)
@@ -1447,8 +1446,7 @@ func TestGetAllFeatureVariablesWithError(t *testing.T) {
14471446
Variations: map[string]entities.Variation{"22222": testVariation},
14481447
}
14491448
testFeature := getTestFeature(testFeatureKey, testExperiment)
1450-
testFeature.Variables = make([]entities.Variable, 1)
1451-
testFeature.Variables[0] = testVariable
1449+
testFeature.VariableMap = map[string]entities.Variable{testVariable.Key: testVariable}
14521450
mockConfig := getMockConfig(testFeatureKey, testVariableKey, testFeature, testVariable)
14531451
mockConfigManager := new(MockProjectConfigManager)
14541452
mockConfigManager.On("GetConfig").Return(mockConfig, nil)

pkg/config/datafileprojectconfig/config.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -99,12 +99,10 @@ func (c DatafileProjectConfig) GetVariableByKey(featureKey, variableKey string)
9999
var variable entities.Variable
100100
var err = fmt.Errorf(`variable with key "%s" not found`, featureKey)
101101
if feature, ok := c.featureMap[featureKey]; ok {
102-
for _, v := range feature.Variables {
103-
if v.Key == variableKey {
104-
variable = v
105-
err = nil
106-
break
107-
}
102+
103+
if v, ok := feature.VariableMap[variableKey]; ok {
104+
variable = v
105+
err = nil
108106
}
109107
}
110108
return variable, err

pkg/config/datafileprojectconfig/config_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -157,11 +157,10 @@ func TestGetVariableByKey(t *testing.T) {
157157
Key: variableKey,
158158
}
159159

160-
variables := make([]entities.Variable, 1)
161-
variables[0] = variable
160+
variableMap := map[string]entities.Variable{variable.Key: variable}
162161

163162
feature := entities.Feature{
164-
Variables: variables,
163+
VariableMap: variableMap,
165164
}
166165

167166
featureMap := make(map[string]entities.Feature)

pkg/config/datafileprojectconfig/mappers/feature.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,17 +42,17 @@ func MapFeatures(featureFlags []datafileEntities.FeatureFlag, rolloutMap map[str
4242
}
4343
}
4444

45-
var variables = []entities.Variable{}
45+
variableMap := map[string]entities.Variable{}
4646
for _, variable := range featureFlag.Variables {
47-
variables = append(variables, entities.Variable{
47+
variableMap[variable.Key] = entities.Variable{
4848
DefaultValue: variable.DefaultValue,
4949
ID: variable.ID,
5050
Key: variable.Key,
51-
Type: variable.Type})
51+
Type: variable.Type}
5252
}
5353

5454
feature.FeatureExperiments = featureExperiments
55-
feature.Variables = variables
55+
feature.VariableMap = variableMap
5656
featureMap[featureFlag.Key] = feature
5757
}
5858
return featureMap

pkg/config/datafileprojectconfig/mappers/feature_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ package mappers
1919
import (
2020
"testing"
2121

22-
"github.com/json-iterator/go"
22+
jsoniter "github.com/json-iterator/go"
2323
datafileEntities "github.com/optimizely/go-sdk/pkg/config/datafileprojectconfig/entities"
2424
"github.com/optimizely/go-sdk/pkg/entities"
2525
"github.com/stretchr/testify/assert"
@@ -62,7 +62,7 @@ func TestMapFeatures(t *testing.T) {
6262
Key: "test_feature_21111",
6363
Rollout: rollout,
6464
FeatureExperiments: []entities.Experiment{experiment31111, experiment31112},
65-
Variables: []entities.Variable{variable},
65+
VariableMap: map[string]entities.Variable{variable.Key: variable},
6666
},
6767
}
6868

pkg/entities/feature.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ type Feature struct {
2323
Key string
2424
FeatureExperiments []Experiment
2525
Rollout Rollout
26-
Variables []Variable
26+
VariableMap map[string]Variable
2727
}
2828

2929
// Rollout represents a feature rollout

0 commit comments

Comments
 (0)