@@ -1221,6 +1221,97 @@ func (s *OptimizelyUserContextTestSuite) TestForcedDecision() {
1221
1221
s .Error (err )
1222
1222
}
1223
1223
1224
+ func (s * OptimizelyUserContextTestSuite ) TestDecideAllFlagsWithBatchUPS () {
1225
+ userProfileService := new (MockUserProfileService )
1226
+ var err error
1227
+ s .OptimizelyClient , err = s .factory .Client (
1228
+ WithEventProcessor (s .eventProcessor ),
1229
+ WithUserProfileService (userProfileService ),
1230
+ )
1231
+ s .Nil (err )
1232
+
1233
+ savedUserProfile := decision.UserProfile {
1234
+ ID : s .userID ,
1235
+ }
1236
+ userProfileService .On ("Lookup" , s .userID ).Return (savedUserProfile )
1237
+ userProfileService .On ("Save" , mock .Anything )
1238
+
1239
+ user := s .OptimizelyClient .CreateUserContext (s .userID , nil )
1240
+ decisions := user .DecideAll (nil )
1241
+ s .Len (decisions , 3 )
1242
+
1243
+ userProfileService .AssertNumberOfCalls (s .T (), "Lookup" , 1 )
1244
+ userProfileService .AssertNumberOfCalls (s .T (), "Save" , 1 )
1245
+ }
1246
+
1247
+ func (s * OptimizelyUserContextTestSuite ) TestDecideForKeysWithBatchUPS () {
1248
+ flagKey1 := "feature_1"
1249
+ experimentID1 := "10390977673"
1250
+ variationKey1 := "18257766532"
1251
+ variationID1 := "variation_with_traffic"
1252
+ flagKey2 := "feature_2" // embedding experiment: "exp_no_audience"
1253
+ experimentID2 := "10420810910"
1254
+ variationID2 := "10418510624"
1255
+ variationKey2 := "variation_no_traffic"
1256
+ userProfileService := new (MockUserProfileService )
1257
+ var err error
1258
+ s .OptimizelyClient , err = s .factory .Client (
1259
+ WithEventProcessor (s .eventProcessor ),
1260
+ WithUserProfileService (userProfileService ),
1261
+ )
1262
+ s .Nil (err )
1263
+
1264
+ savedUserProfile := decision.UserProfile {
1265
+ ID : s .userID ,
1266
+ ExperimentBucketMap : map [decision.UserDecisionKey ]string {
1267
+ decision .NewUserDecisionKey (experimentID1 ): variationID1 ,
1268
+ decision .NewUserDecisionKey (experimentID2 ): variationID2 ,
1269
+ },
1270
+ }
1271
+ userProfileService .On ("Lookup" , s .userID ).Return (savedUserProfile )
1272
+ userProfileService .On ("Save" , mock .Anything )
1273
+
1274
+ user := s .OptimizelyClient .CreateUserContext (s .userID , nil )
1275
+ decisions := user .DecideForKeys ([]string {flagKey1 , flagKey2 }, nil )
1276
+ s .Len (decisions , 2 )
1277
+ s .Equal (variationKey1 , decisions [flagKey1 ].VariationKey )
1278
+ s .Equal (variationKey2 , decisions [flagKey2 ].VariationKey )
1279
+
1280
+ userProfileService .AssertNumberOfCalls (s .T (), "Lookup" , 1 )
1281
+ userProfileService .AssertNumberOfCalls (s .T (), "Save" , 0 )
1282
+ }
1283
+
1284
+ func (s * OptimizelyUserContextTestSuite ) TestDecideWithBatchUPS () {
1285
+ flagKey := "feature_2" // embedding experiment: "exp_no_audience"
1286
+ experimentID := "10420810910"
1287
+ variationID2 := "10418510624"
1288
+ variationKey1 := "variation_no_traffic"
1289
+
1290
+ userProfileService := new (MockUserProfileService )
1291
+ s .OptimizelyClient , _ = s .factory .Client (
1292
+ WithEventProcessor (s .eventProcessor ),
1293
+ WithUserProfileService (userProfileService ),
1294
+ )
1295
+
1296
+ decisionKey := decision .NewUserDecisionKey (experimentID )
1297
+ savedUserProfile := decision.UserProfile {
1298
+ ID : s .userID ,
1299
+ ExperimentBucketMap : map [decision.UserDecisionKey ]string {decisionKey : variationID2 },
1300
+ }
1301
+ userProfileService .On ("Lookup" , s .userID ).Return (savedUserProfile )
1302
+ userProfileService .On ("Save" , mock .Anything )
1303
+
1304
+ client , err := s .factory .Client (WithUserProfileService (userProfileService ))
1305
+ s .Nil (err )
1306
+ user := client .CreateUserContext (s .userID , nil )
1307
+ decision := user .Decide (flagKey , []decide.OptimizelyDecideOptions {decide .IncludeReasons })
1308
+ s .Len (decision .Reasons , 1 )
1309
+
1310
+ s .Equal (variationKey1 , decision .VariationKey )
1311
+ userProfileService .AssertCalled (s .T (), "Lookup" , s .userID )
1312
+ userProfileService .AssertNotCalled (s .T (), "Save" , mock .Anything )
1313
+ }
1314
+
1224
1315
func TestOptimizelyUserContextTestSuite (t * testing.T ) {
1225
1316
suite .Run (t , new (OptimizelyUserContextTestSuite ))
1226
1317
}
0 commit comments