Skip to content

Commit 611350a

Browse files
committed
Add some tests for different inheritance paradigms with tracked inheritance
1 parent a1f16e0 commit 611350a

File tree

2 files changed

+76
-6
lines changed

2 files changed

+76
-6
lines changed

simple_history/tests/models.py

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -279,12 +279,35 @@ class ContactRegister(models.Model):
279279
register(ContactRegister, table_name='contacts_register_history')
280280

281281

282-
class TrackedAbstractBase(models.Model):
282+
###############################################################################
283+
#
284+
# Inheritance examples
285+
#
286+
###############################################################################
287+
288+
class TrackedAbstractBaseA(models.Model):
283289
history = HistoricalRecords()
284290

285291
class Meta:
286292
abstract = True
287293

288294

289-
class Tracked(TrackedAbstractBase):
295+
class TrackedAbstractBaseB(models.Model):
296+
history_b = HistoricalRecords()
297+
298+
class Meta:
299+
abstract = True
300+
301+
302+
class UntrackedAbstractBase(models.Model):
303+
304+
class Meta:
305+
abstract = True
306+
307+
308+
class TrackedConcreteBase(models.Model):
309+
history = HistoricalRecords()
310+
311+
312+
class UntrackedConcreteBase(models.Model):
290313
pass

simple_history/tests/tests/test_models.py

Lines changed: 51 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@
1919
ExternalModel1, ExternalModel3, UnicodeVerboseName, HistoricalChoice,
2020
HistoricalState, HistoricalCustomFKError, Series, SeriesWork, PollInfo,
2121
UserAccessorDefault, UserAccessorOverride, Employee, Country, Province,
22-
City, Contact, ContactRegister, Tracked
22+
City, Contact, ContactRegister,
23+
TrackedAbstractBaseA, TrackedAbstractBaseB, UntrackedAbstractBase,
24+
TrackedConcreteBase, UntrackedConcreteBase,
2325
)
2426
from ..external.models import ExternalModel2, ExternalModel4
2527

@@ -781,7 +783,52 @@ def test_custom_table_name_from_register(self):
781783
)
782784

783785

784-
class TestAbstractHistoricalBaseModel(TestCase):
786+
class TestTrackingInheritance(TestCase):
785787

786-
def test_historical_abstract(self):
787-
Tracked.history.all()
788+
def test_tracked_abstract_base(self):
789+
class TrackedWithAbstractBase(TrackedAbstractBaseA):
790+
pass
791+
792+
TrackedWithAbstractBase.history.all()
793+
794+
def test_tracked_concrete_base(self):
795+
class TrackedWithConcreteBase(TrackedConcreteBase):
796+
pass
797+
798+
TrackedWithConcreteBase.history.all()
799+
800+
def test_multiple_tracked_bases(self):
801+
with self.assertRaises(exceptions.MultipleRegistrationsError):
802+
class TrackedWithMultipleAbstractBases(TrackedAbstractBaseA, TrackedAbstractBaseB):
803+
pass
804+
805+
def test_tracked_abstract_and_untracked_concrete_base(self):
806+
class TrackedWithTrackedAbstractAndUntrackedConcreteBase(TrackedAbstractBaseA, UntrackedConcreteBase):
807+
pass
808+
809+
TrackedWithTrackedAbstractAndUntrackedConcreteBase.history.all()
810+
811+
def test_indirect_tracked_abstract_base(self):
812+
class BaseTrackedWithIndirectTrackedAbstractBase(TrackedAbstractBaseA):
813+
pass
814+
815+
class TrackedWithIndirectTrackedAbstractBase(BaseTrackedWithIndirectTrackedAbstractBase):
816+
pass
817+
818+
TrackedWithIndirectTrackedAbstractBase.history.all()
819+
820+
def test_indirect_tracked_concrete_base(self):
821+
class BaseTrackedWithIndirectTrackedConcreteBase(TrackedAbstractBaseA):
822+
pass
823+
824+
class TrackedWithIndirectTrackedConcreteBase(BaseTrackedWithIndirectTrackedConcreteBase):
825+
pass
826+
827+
TrackedWithIndirectTrackedConcreteBase.history.all()
828+
829+
def test_registering_with_tracked_abstract_base(self):
830+
class TrackedWithAbstractBaseToRegister(TrackedAbstractBaseA):
831+
pass
832+
833+
with self.assertRaises(exceptions.MultipleRegistrationsError):
834+
register(TrackedWithAbstractBaseToRegister)

0 commit comments

Comments
 (0)