@@ -1190,6 +1190,83 @@ def test_activity_partial_update(self):
11901190 expected ["popularity" ] = 9000
11911191 self .assertEqual (updated , expected )
11921192
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+
11931270 def test_create_reference (self ):
11941271 ref = self .c .collections .create_reference ("item" , "42" )
11951272 self .assertEqual (ref , "SO:item:42" )
0 commit comments