@@ -37,7 +37,8 @@ func (m *MockRequester) Get(headers ...utils.Header) (response []byte, code int,
37
37
}
38
38
39
39
func TestNewPollingProjectConfigManagerWithOptions (t * testing.T ) {
40
- mockDatafile := []byte ("{ revision: \" 42\" }" )
40
+
41
+ mockDatafile := []byte (`{"revision":"42"}` )
41
42
projectConfig , _ := datafileprojectconfig .NewDatafileProjectConfig (mockDatafile )
42
43
mockRequester := new (MockRequester )
43
44
mockRequester .On ("Get" , []utils.Header (nil )).Return (mockDatafile , 200 , nil )
@@ -53,7 +54,8 @@ func TestNewPollingProjectConfigManagerWithOptions(t *testing.T) {
53
54
mockRequester .AssertExpectations (t )
54
55
55
56
actual , err := configManager .GetConfig ()
56
- assert .NotNil (t , err )
57
+ assert .Nil (t , err )
58
+ assert .NotNil (t , actual )
57
59
assert .Equal (t , projectConfig , actual )
58
60
}
59
61
@@ -74,3 +76,57 @@ func TestNewPollingProjectConfigManagerWithNull(t *testing.T) {
74
76
_ , err := configManager .GetConfig ()
75
77
assert .NotNil (t , err )
76
78
}
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