diff --git a/auditlog_tests/models.py b/auditlog_tests/models.py index f5db94e..6ef4d59 100644 --- a/auditlog_tests/models.py +++ b/auditlog_tests/models.py @@ -200,6 +200,16 @@ class DateTimeFieldModel(models.Model): history = AuditlogHistoryField(delete_related=True) +class DecimalFieldModel(models.Model): + """ + A model with a DecimalField, used to test DecimalField changes + are detected properly. + """ + decimal = models.DecimalField(max_digits=18, decimal_places=2, default=0) + + history = AuditlogHistoryField(delete_related=True) + + class ChoicesFieldModel(models.Model): """ A model with a CharField restricted to a set of choices. @@ -341,6 +351,7 @@ auditlog.register(SimpleExcludeModel, exclude_fields=["text"]) auditlog.register(SimpleMappingModel, mapping_fields={"sku": "Product No."}) auditlog.register(AdditionalDataIncludedModel) auditlog.register(DateTimeFieldModel) +auditlog.register(DecimalFieldModel) auditlog.register(ChoicesFieldModel) auditlog.register(CharfieldTextfieldModel) auditlog.register(PostgresArrayFieldModel) diff --git a/auditlog_tests/tests.py b/auditlog_tests/tests.py index 0a682c6..785445b 100644 --- a/auditlog_tests/tests.py +++ b/auditlog_tests/tests.py @@ -6,6 +6,7 @@ import warnings from datetime import timezone from unittest import mock from unittest.mock import patch +from decimal import Decimal import freezegun from dateutil.tz import gettz @@ -41,6 +42,7 @@ from auditlog_tests.models import ( AutoManyRelatedModel, CharfieldTextfieldModel, ChoicesFieldModel, + DecimalFieldModel, DateTimeFieldModel, JSONModel, ManyRelatedModel, @@ -1196,7 +1198,8 @@ class RegisterModelSettingsTest(TestCase): self.assertTrue(self.test_auditlog.contains(SimpleExcludeModel)) self.assertTrue(self.test_auditlog.contains(ChoicesFieldModel)) - self.assertEqual(len(self.test_auditlog.get_models()), 25) + self.assertTrue(self.test_auditlog.contains(DecimalFieldModel)) + self.assertEqual(len(self.test_auditlog.get_models()), 26) def test_register_models_register_model_with_attrs(self): self.test_auditlog._register_models( @@ -1463,6 +1466,17 @@ class ChoicesFieldModelTest(TestCase): assert "related_models" in history.changes_display_dict +class DecimalFieldModelTest(TestCase): + + def setUp(self): + self.obj = DecimalFieldModel.objects.create(decimal=0) + + def test_no_changes_detected_after_saving_again(self): + self.assertEqual(self.obj.history.count(), 1) + self.obj.save() + self.assertEqual(self.obj.history.count(), 1) + + class CharFieldTextFieldModelTest(TestCase): def setUp(self): self.PLACEHOLDER_LONGCHAR = "s" * 255