@@ -127,6 +127,39 @@ func TestNewPollingProjectConfigManagerWithDifferentDatafileRevisions(t *testing
127127 assert .Equal (t , projectConfig2 , actual )
128128}
129129
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+
130163func TestNewPollingProjectConfigManagerOnDecision (t * testing.T ) {
131164 mockDatafile1 := []byte (`{"revision":"42","botFiltering":true}` )
132165 mockDatafile2 := []byte (`{"revision":"43","botFiltering":false}` )
0 commit comments