@@ -127,6 +127,39 @@ func TestNewPollingProjectConfigManagerWithDifferentDatafileRevisions(t *testing
127
127
assert .Equal (t , projectConfig2 , actual )
128
128
}
129
129
130
+ func TestNewPollingProjectConfigManagerWithErrorHandling (t * testing.T ) {
131
+ mockDatafile1 := []byte ("NOT-VALID" )
132
+ mockDatafile2 := []byte (`{"revision":"43","botFiltering":false}` )
133
+
134
+ projectConfig1 , _ := datafileprojectconfig .NewDatafileProjectConfig (mockDatafile1 )
135
+ projectConfig2 , _ := datafileprojectconfig .NewDatafileProjectConfig (mockDatafile2 )
136
+ mockRequester := new (MockRequester )
137
+ mockRequester .On ("Get" , []utils.Header (nil )).Return (mockDatafile1 , 200 , nil )
138
+
139
+ // Test we fetch using requester
140
+ sdkKey := "test_sdk_key"
141
+
142
+ exeCtx := utils .NewCancelableExecutionCtx ()
143
+ configManager := NewPollingProjectConfigManager (sdkKey , Requester (mockRequester ))
144
+ configManager .Start (exeCtx )
145
+ mockRequester .AssertExpectations (t )
146
+
147
+ actual , err := configManager .GetConfig () // polling for bad file
148
+ assert .NotNil (t , err )
149
+ assert .Nil (t , actual )
150
+ assert .Nil (t , projectConfig1 )
151
+
152
+ configManager .SyncConfig (mockDatafile2 ) // polling for good file
153
+ actual , err = configManager .GetConfig ()
154
+ assert .Nil (t , err )
155
+ assert .Equal (t , projectConfig2 , actual )
156
+
157
+ configManager .SyncConfig (mockDatafile1 ) // polling for bad file, error not null but good project
158
+ actual , err = configManager .GetConfig ()
159
+ assert .Nil (t , err )
160
+ assert .Equal (t , projectConfig2 , actual )
161
+ }
162
+
130
163
func TestNewPollingProjectConfigManagerOnDecision (t * testing.T ) {
131
164
mockDatafile1 := []byte (`{"revision":"42","botFiltering":true}` )
132
165
mockDatafile2 := []byte (`{"revision":"43","botFiltering":false}` )
0 commit comments