Add tests for tracking non-field attributes

This commit is contained in:
Trey Hunner 2013-06-03 12:08:01 -07:00
parent 99a051d137
commit aaf2219013
2 changed files with 63 additions and 2 deletions

View file

@ -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()

View file

@ -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):