mirror of
https://github.com/Hopiu/django-model-utils.git
synced 2026-03-16 20:00:23 +00:00
Add tests for tracking non-field attributes
This commit is contained in:
parent
99a051d137
commit
aaf2219013
2 changed files with 63 additions and 2 deletions
|
|
@ -253,6 +253,16 @@ class TrackedNotDefault(models.Model):
|
|||
name_tracker = FieldTracker(fields=['name'])
|
||||
|
||||
|
||||
class TrackedNonFieldAttr(models.Model):
|
||||
number = models.FloatField()
|
||||
|
||||
@property
|
||||
def rounded(self):
|
||||
return round(self.number) if self.number is not None else None
|
||||
|
||||
tracker = FieldTracker(fields=['rounded'])
|
||||
|
||||
|
||||
class TrackedMultiple(models.Model):
|
||||
name = models.CharField(max_length=20)
|
||||
number = models.IntegerField()
|
||||
|
|
|
|||
|
|
@ -22,8 +22,8 @@ from model_utils.tests.models import (
|
|||
StatusPlainTuple, TimeFrame, Monitored, StatusManagerAdded,
|
||||
TimeFrameManagerAdded, Dude, SplitFieldAbstractParent, Car, Spot,
|
||||
ModelTracked, ModelTrackedFK, ModelTrackedNotDefault, ModelTrackedMultiple,
|
||||
Tracked, TrackedFK, TrackedNotDefault, TrackedMultiple,
|
||||
StatusFieldDefaultFilled, StatusFieldDefaultNotFilled)
|
||||
Tracked, TrackedFK, TrackedNotDefault, TrackedNonFieldAttr,
|
||||
TrackedMultiple, StatusFieldDefaultFilled, StatusFieldDefaultNotFilled)
|
||||
|
||||
|
||||
|
||||
|
|
@ -889,6 +889,57 @@ class FieldTrackedModelCustomTests(FieldTrackerTestCase,
|
|||
self.assertCurrent(name='new age')
|
||||
|
||||
|
||||
class FieldTrackedModelAttributeTests(FieldTrackerTestCase):
|
||||
|
||||
tracked_class = TrackedNonFieldAttr
|
||||
|
||||
def setUp(self):
|
||||
self.instance = self.tracked_class()
|
||||
self.tracker = self.instance.tracker
|
||||
|
||||
def test_previous(self):
|
||||
self.assertPrevious(rounded=None)
|
||||
self.instance.number = 8.5
|
||||
self.assertPrevious(rounded=None)
|
||||
self.instance.save()
|
||||
self.assertPrevious(rounded=9)
|
||||
self.instance.number = 8.2
|
||||
self.assertPrevious(rounded=9)
|
||||
self.instance.save()
|
||||
self.assertPrevious(rounded=8)
|
||||
|
||||
def test_has_changed(self):
|
||||
self.assertHasChanged(rounded=False)
|
||||
self.instance.number = 8.5
|
||||
self.assertHasChanged(rounded=True)
|
||||
self.instance.save()
|
||||
self.assertHasChanged(rounded=False)
|
||||
self.instance.number = 8.2
|
||||
self.assertHasChanged(rounded=True)
|
||||
self.instance.number = 8.8
|
||||
self.assertHasChanged(rounded=False)
|
||||
|
||||
def test_changed(self):
|
||||
self.assertChanged()
|
||||
self.instance.number = 8.5
|
||||
self.assertPrevious(rounded=None)
|
||||
self.instance.save()
|
||||
self.assertPrevious()
|
||||
self.instance.number = 8.8
|
||||
self.assertPrevious()
|
||||
self.instance.number = 8.2
|
||||
self.assertPrevious(rounded=9)
|
||||
self.instance.save()
|
||||
self.assertPrevious()
|
||||
|
||||
def test_current(self):
|
||||
self.assertCurrent(rounded=None)
|
||||
self.instance.number = 8.5
|
||||
self.assertCurrent(rounded=9)
|
||||
self.instance.save()
|
||||
self.assertCurrent(rounded=9)
|
||||
|
||||
|
||||
class FieldTrackedModelMultiTests(FieldTrackerTestCase,
|
||||
FieldTrackerCommonTests):
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue