@@ -1190,6 +1190,83 @@ def test_activity_partial_update(self):
1190
1190
expected ["popularity" ] = 9000
1191
1191
self .assertEqual (updated , expected )
1192
1192
1193
+ def test_activities_partial_update (self ):
1194
+
1195
+ feed = self .c .feed ("user" , uuid4 ())
1196
+ feed .add_activities (
1197
+ [
1198
+ {
1199
+ "actor" : "barry" ,
1200
+ "object" : "09" ,
1201
+ "verb" : "tweet" ,
1202
+ "time" : datetime .datetime .utcnow (),
1203
+ "foreign_id" : "fid:123" ,
1204
+ "product" : {"name" : "shoes" , "price" : 9.99 , "color" : "blue" },
1205
+ },
1206
+ {
1207
+ "actor" : "jerry" ,
1208
+ "object" : "10" ,
1209
+ "verb" : "tweet" ,
1210
+ "time" : datetime .datetime .utcnow (),
1211
+ "foreign_id" : "fid:456" ,
1212
+ "product" : {"name" : "shoes" , "price" : 9.99 , "color" : "blue" },
1213
+ },
1214
+ {
1215
+ "actor" : "tommy" ,
1216
+ "object" : "09" ,
1217
+ "verb" : "tweet" ,
1218
+ "time" : datetime .datetime .utcnow (),
1219
+ "foreign_id" : "fid:789" ,
1220
+ "product" : {"name" : "shoes" , "price" : 9.99 , "color" : "blue" },
1221
+ },
1222
+ ]
1223
+ )
1224
+ activities = feed .get ()["results" ]
1225
+
1226
+ batch = [
1227
+ {
1228
+ "id" : activities [0 ]["id" ],
1229
+ "set" : {"product.color" : "purple" , "custom" : {"some" : "extra data" }},
1230
+ "unset" : ["product.price" ],
1231
+ },
1232
+ {
1233
+ "id" : activities [2 ]["id" ],
1234
+ "set" : {"product.price" : 9001 , "on_sale" : True },
1235
+ },
1236
+ ]
1237
+
1238
+ # partial update by ID
1239
+ self .c .activities_partial_update (batch )
1240
+ updated = feed .get ()["results" ]
1241
+ expected = activities
1242
+ expected [0 ]["product" ] = {"name" : "shoes" , "color" : "purple" }
1243
+ expected [0 ]["custom" ] = {"some" : "extra data" }
1244
+ expected [2 ]["product" ] = {"name" : "shoes" , "price" : 9001 , "color" : "blue" }
1245
+ expected [2 ]["on_sale" ] = True
1246
+ self .assertEqual (updated , expected )
1247
+
1248
+ # partial update by foreign ID + time
1249
+ batch = [
1250
+ {
1251
+ "foreign_id" : activities [1 ]["foreign_id" ],
1252
+ "time" : activities [1 ]["time" ],
1253
+ "set" : {"product.color" : "beeeeeeige" , "custom" : {"modified_by" : "me" }},
1254
+ "unset" : ["product.name" ],
1255
+ },
1256
+ {
1257
+ "foreign_id" : activities [2 ]["foreign_id" ],
1258
+ "time" : activities [2 ]["time" ],
1259
+ "unset" : ["on_sale" ],
1260
+ },
1261
+ ]
1262
+ self .c .activities_partial_update (batch )
1263
+ updated = feed .get ()["results" ]
1264
+
1265
+ expected [1 ]["product" ] = {"price" : 9.99 , "color" : "beeeeeeige" }
1266
+ expected [1 ]["custom" ] = {"modified_by" : "me" }
1267
+ del expected [2 ]["on_sale" ]
1268
+ self .assertEqual (updated , expected )
1269
+
1193
1270
def test_create_reference (self ):
1194
1271
ref = self .c .collections .create_reference ("item" , "42" )
1195
1272
self .assertEqual (ref , "SO:item:42" )
0 commit comments