11/****************************************************************************
2- * Copyright 2019-2020,2022 Optimizely, Inc. and contributors *
2+ * Copyright 2019-2020,2022-2023 Optimizely, Inc. and contributors *
33 * *
44 * Licensed under the Apache License, Version 2.0 (the "License"); *
55 * you may not use this file except in compliance with the License. *
@@ -205,12 +205,29 @@ func (m *MockODPManager) Update(apiKey, apiHost string, segmentsToCheck []string
205205 m .Called (apiKey , apiHost , segmentsToCheck )
206206}
207207
208+ func TestSendODPEventWhenSDKNotReady (t * testing.T ) {
209+ factory := OptimizelyFactory {SDKKey : "121" }
210+ client , _ := factory .Client ()
211+ err := client .SendOdpEvent ("123" , "456" , map [string ]string {
212+ "abc" : "123" ,
213+ }, map [string ]interface {}{
214+ "abc" : nil ,
215+ "idempotence_id" : 234 ,
216+ "data_source_type" : "456" ,
217+ "data_source" : true ,
218+ "data_source_version" : 6.78 ,
219+ })
220+ assert .Error (t , err )
221+ }
222+
208223func TestSendODPEventWhenODPDisabled (t * testing.T ) {
209224 factory := OptimizelyFactory {SDKKey : "1212" }
210225 var segmentsCacheSize = 1
211226 var segmentsCacheTimeout = 1 * time .Second
212227 var disableOdp = true
213228 optimizelyClient , err := factory .Client (WithSegmentsCacheSize (segmentsCacheSize ), WithSegmentsCacheTimeout (segmentsCacheTimeout ), WithOdpDisabled (disableOdp ))
229+ optimizelyClient .ConfigManager = getMockConfigManager ()
230+
214231 assert .NoError (t , err )
215232 err = optimizelyClient .SendOdpEvent ("123" , "456" , map [string ]string {
216233 "abc" : "123" ,
@@ -221,7 +238,7 @@ func TestSendODPEventWhenODPDisabled(t *testing.T) {
221238 "data_source" : true ,
222239 "data_source_version" : 6.78 ,
223240 })
224- assert .Error ( t , err )
241+ assert .Equal ( t , errors . New ( pkgOdpUtils . OdpNotEnabled ) , err )
225242}
226243
227244func TestSendODPEventEmptyType (t * testing.T ) {
@@ -240,7 +257,8 @@ func TestSendODPEventEmptyType(t *testing.T) {
240257 mockOdpManager := & MockODPManager {}
241258 mockOdpManager .On ("SendOdpEvent" , eventType , action , identifiers , data ).Return (nil )
242259 optimizelyClient := OptimizelyClient {
243- OdpManager : mockOdpManager ,
260+ OdpManager : mockOdpManager ,
261+ ConfigManager : getMockConfigManager (),
244262 }
245263 err := optimizelyClient .SendOdpEvent ("" , action , identifiers , data )
246264 assert .NoError (t , err )
@@ -258,10 +276,11 @@ func TestSendODPEventEmptyIdentifiers(t *testing.T) {
258276 "data_source_version" : 6.78 ,
259277 }
260278 optimizelyClient := OptimizelyClient {
261- logger : logging .GetLogger ("" , "" ),
279+ logger : logging .GetLogger ("" , "" ),
280+ ConfigManager : getMockConfigManager (),
262281 }
263282 err := optimizelyClient .SendOdpEvent ("" , action , identifiers , data )
264- assert .Error ( t , err )
283+ assert .Equal ( t , errors . New ( "ODP events must have at least one key-value pair in identifiers" ) , err )
265284}
266285
267286func TestSendODPEventNilIdentifiers (t * testing.T ) {
@@ -274,17 +293,19 @@ func TestSendODPEventNilIdentifiers(t *testing.T) {
274293 "data_source_version" : 6.78 ,
275294 }
276295 optimizelyClient := OptimizelyClient {
277- logger : logging .GetLogger ("" , "" ),
296+ logger : logging .GetLogger ("" , "" ),
297+ ConfigManager : getMockConfigManager (),
278298 }
279299 err := optimizelyClient .SendOdpEvent ("" , action , nil , data )
280- assert .Error ( t , err )
300+ assert .Equal ( t , errors . New ( "ODP events must have at least one key-value pair in identifiers" ) , err )
281301}
282302
283303func TestSendODPEvent (t * testing.T ) {
284304 mockOdpManager := & MockODPManager {}
285305 mockOdpManager .On ("SendOdpEvent" , "123" , "" , map [string ]string {"identifier" : "123" }, mock .Anything ).Return (nil )
286306 optimizelyClient := OptimizelyClient {
287- OdpManager : mockOdpManager ,
307+ OdpManager : mockOdpManager ,
308+ ConfigManager : getMockConfigManager (),
288309 }
289310 err := optimizelyClient .SendOdpEvent ("123" , "" , map [string ]string {"identifier" : "123" }, nil )
290311 assert .NoError (t , err )
@@ -2124,6 +2145,13 @@ func getMockConfig(featureKey string, variableKey string, feature entities.Featu
21242145 return mockConfig
21252146}
21262147
2148+ func getMockConfigManager () * MockProjectConfigManager {
2149+ mockConfig := new (MockProjectConfig )
2150+ mockConfigManager := new (MockProjectConfigManager )
2151+ mockConfigManager .On ("GetConfig" ).Return (mockConfig , nil )
2152+ return mockConfigManager
2153+ }
2154+
21272155func getTestFeature (featureKey string , experiment entities.Experiment ) entities.Feature {
21282156 return entities.Feature {
21292157 ID : "22222" ,
0 commit comments