Skip to content

Commit 5709ff6

Browse files
committed
Test-cases added for revision checking.
1 parent 6091bbd commit 5709ff6

File tree

1 file changed

+58
-2
lines changed

1 file changed

+58
-2
lines changed

optimizely/config/polling_manager_test.go

Lines changed: 58 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ func (m *MockRequester) Get(headers ...utils.Header) (response []byte, code int,
3737
}
3838

3939
func TestNewPollingProjectConfigManagerWithOptions(t *testing.T) {
40-
mockDatafile := []byte("{ revision: \"42\" }")
40+
41+
mockDatafile := []byte(`{"revision":"42"}`)
4142
projectConfig, _ := datafileprojectconfig.NewDatafileProjectConfig(mockDatafile)
4243
mockRequester := new(MockRequester)
4344
mockRequester.On("Get", []utils.Header(nil)).Return(mockDatafile, 200, nil)
@@ -53,7 +54,8 @@ func TestNewPollingProjectConfigManagerWithOptions(t *testing.T) {
5354
mockRequester.AssertExpectations(t)
5455

5556
actual, err := configManager.GetConfig()
56-
assert.NotNil(t, err)
57+
assert.Nil(t, err)
58+
assert.NotNil(t, actual)
5759
assert.Equal(t, projectConfig, actual)
5860
}
5961

@@ -74,3 +76,57 @@ func TestNewPollingProjectConfigManagerWithNull(t *testing.T) {
7476
_, err := configManager.GetConfig()
7577
assert.NotNil(t, err)
7678
}
79+
80+
func TestNewPollingProjectConfigManagerWithSimilarDatafileRevisions(t *testing.T) {
81+
mockDatafile1 := []byte(`{"revision":"42","projectId":"1000"}`)
82+
mockDatafile2 := []byte(`{"revision":"42","projectId":"1001"}`)
83+
projectConfig1, _ := datafileprojectconfig.NewDatafileProjectConfig(mockDatafile1)
84+
mockRequester := new(MockRequester)
85+
mockRequester.On("Get", []utils.Header(nil)).Return(mockDatafile1, 200, nil)
86+
87+
sdkKey := "test_sdk_key"
88+
options := PollingProjectConfigManagerOptions{
89+
Requester: mockRequester,
90+
}
91+
92+
exeCtx := utils.NewCancelableExecutionCtx()
93+
configManager := NewPollingProjectConfigManagerWithOptions(exeCtx, sdkKey, options)
94+
mockRequester.AssertExpectations(t)
95+
96+
actual, err := configManager.GetConfig()
97+
assert.Nil(t, err)
98+
assert.NotNil(t, actual)
99+
assert.Equal(t, projectConfig1, actual)
100+
101+
configManager.SyncConfig(mockDatafile2)
102+
actual, err = configManager.GetConfig()
103+
assert.Equal(t, projectConfig1, actual)
104+
}
105+
106+
func TestNewPollingProjectConfigManagerWithDifferentDatafileRevisions(t *testing.T) {
107+
mockDatafile1 := []byte(`{"revision":"42","projectId":"1000"}`)
108+
mockDatafile2 := []byte(`{"revision":"43","projectId":"1001"}`)
109+
projectConfig1, _ := datafileprojectconfig.NewDatafileProjectConfig(mockDatafile1)
110+
projectConfig2, _ := datafileprojectconfig.NewDatafileProjectConfig(mockDatafile2)
111+
mockRequester := new(MockRequester)
112+
mockRequester.On("Get", []utils.Header(nil)).Return(mockDatafile1, 200, nil)
113+
114+
// Test we fetch using requester
115+
sdkKey := "test_sdk_key"
116+
options := PollingProjectConfigManagerOptions{
117+
Requester: mockRequester,
118+
}
119+
120+
exeCtx := utils.NewCancelableExecutionCtx()
121+
configManager := NewPollingProjectConfigManagerWithOptions(exeCtx, sdkKey, options)
122+
mockRequester.AssertExpectations(t)
123+
124+
actual, err := configManager.GetConfig()
125+
assert.Nil(t, err)
126+
assert.NotNil(t, actual)
127+
assert.Equal(t, projectConfig1, actual)
128+
129+
configManager.SyncConfig(mockDatafile2)
130+
actual, err = configManager.GetConfig()
131+
assert.Equal(t, projectConfig2, actual)
132+
}

0 commit comments

Comments
 (0)