File tree Expand file tree Collapse file tree 2 files changed +36
-2
lines changed
Expand file tree Collapse file tree 2 files changed +36
-2
lines changed Original file line number Diff line number Diff line change 1- # Copyright © 2021 Ingram Micro Inc. All rights reserved.
1+ # Copyright © 2022 Ingram Micro Inc. All rights reserved.
2+
3+ from datetime import date , datetime
24
35from dj_cqrs .constants import ALL_BASIC_FIELDS , FIELDS_TRACKER_FIELD_NAME
46
@@ -25,6 +27,14 @@ def changed(self):
2527 def changed_initial (self ):
2628 return {field : None for field in self .fields if self .get_field_value (field ) is not None }
2729
30+ def get_field_value (self , field ):
31+ value = super ().get_field_value (field )
32+
33+ if isinstance (value , (date , datetime )):
34+ value = str (value )
35+
36+ return value
37+
2838
2939class CQRSTracker (FieldTracker ):
3040
Original file line number Diff line number Diff line change 1- # Copyright © 2021 Ingram Micro Inc. All rights reserved.
1+ # Copyright © 2022 Ingram Micro Inc. All rights reserved.
22
3+ from datetime import timedelta
34from time import sleep
45from uuid import uuid4
56
@@ -636,6 +637,29 @@ def test_cqrs_tracked_fields_tracking(mocker):
636637 assert tracked_data == {'cqrs_revision' : 0 , 'char_field' : 'Value' }
637638
638639
640+ @pytest .mark .django_db (transaction = True )
641+ def test_cqrs_tracked_fields_date_and_datetime_tracking (mocker ):
642+ old_dt = now ()
643+ old_d = (old_dt + timedelta (days = 1 )).date ()
644+
645+ models .BasicFieldsModel .objects .create (
646+ int_field = 1 ,
647+ datetime_field = old_dt ,
648+ date_field = old_d ,
649+ )
650+
651+ publisher_mock = mocker .patch ('dj_cqrs.controller.producer.produce' )
652+ instance = models .BasicFieldsModel .objects .first ()
653+ instance .datetime_field = now ()
654+ instance .date_field = now ().date ()
655+ instance .save ()
656+
657+ tracked_data = instance .get_tracked_fields_data ()
658+ assert publisher_mock .call_args [0 ][0 ].previous_data == tracked_data == {
659+ 'cqrs_revision' : 0 , 'datetime_field' : str (old_dt ), 'date_field' : str (old_d ),
660+ }
661+
662+
639663def test_mptt_cqrs_tracked_fields_model_has_tracker ():
640664 instance = models .MPTTWithTrackingModel ()
641665 tracker = getattr (instance , FIELDS_TRACKER_FIELD_NAME )
You can’t perform that action at this time.
0 commit comments