@@ -734,7 +734,7 @@ def test_transaction_instance_saved_once_simple_case(mocker):
734
734
735
735
mapper = (
736
736
(i0 .pk , 0 , 'old' , None ),
737
- (i1 .pk , 0 , '2' , '1' ),
737
+ (i1 .pk , 0 , '2' , None ),
738
738
(i2 .pk , 0 , 'a' , None ),
739
739
(i3 .pk , 0 , '.' , None ),
740
740
(i0 .pk , 1 , 'new' , 'old' ),
@@ -749,6 +749,27 @@ def test_transaction_instance_saved_once_simple_case(mocker):
749
749
assert payload .previous_data ['char_field' ] == expected_data [3 ]
750
750
751
751
752
+ @pytest .mark .django_db (transaction = True )
753
+ def test_transaction_instance_saved_multiple_times_previous_data (mocker ):
754
+ publisher_mock = mocker .patch ('dj_cqrs.controller.producer.produce' )
755
+ instance = models .TrackedFieldsParentModel .objects .create (char_field = 'db_value' )
756
+
757
+ with transaction .atomic ():
758
+ instance .refresh_from_db ()
759
+ instance .char_field = 'save_1'
760
+ instance .save ()
761
+ instance .char_field = 'save_2'
762
+ instance .save ()
763
+
764
+ assert publisher_mock .call_count == 2
765
+ payload_create = publisher_mock .call_args_list [0 ][0 ][0 ]
766
+ payload_update = publisher_mock .call_args_list [1 ][0 ][0 ]
767
+ assert payload_create .instance_data ['char_field' ] == 'db_value'
768
+ assert payload_create .previous_data ['char_field' ] is None
769
+ assert payload_update .instance_data ['char_field' ] == 'save_2'
770
+ assert payload_update .previous_data ['char_field' ] == 'db_value'
771
+
772
+
752
773
@pytest .mark .django_db (transaction = True )
753
774
def test_cqrs_saves_count_lifecycle ():
754
775
instance = models .TrackedFieldsParentModel (char_field = '1' )
0 commit comments