@@ -245,3 +245,41 @@ def test_can_increment(self):
245245 with self .store .open_session () as session :
246246 loaded = session .load (self .doc_id , User )
247247 self .assertEqual (3 , loaded .stuff [0 ].key )
248+
249+ def test_should_merge_patch_calls (self ):
250+ stuff = [Stuff (6 ), None , None ]
251+
252+ user = User (stuff , numbers = [66 ])
253+ user2 = User (stuff , numbers = [1 , 2 , 3 ])
254+
255+ docid2 = "users/2-A"
256+
257+ with self .store .open_session () as session :
258+ session .store (user )
259+ session .store (user2 , docid2 )
260+ session .save_changes ()
261+
262+ now = datetime .utcnow ()
263+
264+ with self .store .open_session () as session :
265+ session .advanced .patch (self .doc_id , "numbers[0]" , 31 )
266+ self .assertEqual (1 , len (session ._deferred_commands ))
267+ session .advanced .patch (self .doc_id , "last_login" , now )
268+ self .assertEqual (1 , len (session ._deferred_commands ))
269+ session .advanced .patch (docid2 , "numbers[0]" , 123 )
270+ self .assertEqual (2 , len (session ._deferred_commands ))
271+ session .advanced .patch (docid2 , "last_login" , now )
272+
273+ session .save_changes ()
274+
275+ with self .store .open_session () as session :
276+ session .advanced .increment (self .doc_id , "numbers[0]" , 1 )
277+ self .assertEqual (1 , len (session ._deferred_commands ))
278+ session .advanced .patch_array (self .doc_id , "numbers" , lambda r : r .add (77 ))
279+ self .assertEqual (1 , len (session ._deferred_commands ))
280+ session .advanced .patch_array (self .doc_id , "numbers" , lambda r : r .add (88 ))
281+ self .assertEqual (1 , len (session ._deferred_commands ))
282+ session .advanced .patch_array (self .doc_id , "numbers" , lambda r : r .remove_at (1 ))
283+ self .assertEqual (1 , len (session ._deferred_commands ))
284+
285+ session .save_changes ()
0 commit comments