mirror of
https://github.com/jazzband/django-auditlog.git
synced 2026-03-16 22:20:26 +00:00
[tests] Check cases when reverse related field DoesNotExist. (#252)
This commit is contained in:
parent
1e7d320a93
commit
d9b0d76f3a
2 changed files with 45 additions and 4 deletions
|
|
@ -60,12 +60,21 @@ class ProxyModel(SimpleModel):
|
|||
proxy = True
|
||||
|
||||
|
||||
class RelatedModel(models.Model):
|
||||
class RelatedModelParent(models.Model):
|
||||
"""
|
||||
Use multi table inheritance to make a OneToOneRel field
|
||||
"""
|
||||
|
||||
|
||||
class RelatedModel(RelatedModelParent):
|
||||
"""
|
||||
A model with a foreign key.
|
||||
"""
|
||||
|
||||
related = models.ForeignKey(to="self", on_delete=models.CASCADE)
|
||||
related = models.ForeignKey(to="SimpleModel", on_delete=models.CASCADE)
|
||||
one_to_one = models.OneToOneField(
|
||||
to="SimpleModel", on_delete=models.CASCADE, related_name="reverse_one_to_one"
|
||||
)
|
||||
|
||||
history = AuditlogHistoryField()
|
||||
|
||||
|
|
|
|||
|
|
@ -927,7 +927,7 @@ 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()), 17)
|
||||
self.assertEqual(len(self.test_auditlog.get_models()), 18)
|
||||
|
||||
def test_register_models_register_model_with_attrs(self):
|
||||
self.test_auditlog._register_models(
|
||||
|
|
@ -1276,7 +1276,39 @@ class JSONModelTest(TestCase):
|
|||
|
||||
|
||||
class ModelInstanceDiffTest(TestCase):
|
||||
def test_when_field_doesnt_exit(self):
|
||||
def test_diff_models_with_related_fields(self):
|
||||
"""No error is raised when comparing models with related fields."""
|
||||
|
||||
# This tests that track_field() does indeed ignore related fields.
|
||||
|
||||
# a model without reverse relations
|
||||
simple1 = SimpleModel()
|
||||
simple1.save()
|
||||
|
||||
# a model with reverse relations
|
||||
simple2 = SimpleModel()
|
||||
simple2.save()
|
||||
related = RelatedModel(related=simple2, one_to_one=simple2)
|
||||
related.save()
|
||||
|
||||
# Demonstrate that simple1 can have DoesNotExist on reverse
|
||||
# OneToOne relation.
|
||||
with self.assertRaises(
|
||||
SimpleModel.reverse_one_to_one.RelatedObjectDoesNotExist
|
||||
):
|
||||
simple1.reverse_one_to_one # equals None
|
||||
|
||||
# accessing relatedmodel_set won't trigger DoesNotExist.
|
||||
self.assertEqual(simple1.relatedmodel_set.count(), 0)
|
||||
|
||||
# simple2 DOES have these relations
|
||||
self.assertEqual(simple2.reverse_one_to_one, related)
|
||||
self.assertEqual(simple2.relatedmodel_set.count(), 1)
|
||||
|
||||
model_instance_diff(simple2, simple1)
|
||||
model_instance_diff(simple1, simple2)
|
||||
|
||||
def test_when_field_doesnt_exist(self):
|
||||
"""No error is raised and the default is returned."""
|
||||
first = SimpleModel(boolean=True)
|
||||
second = SimpleModel()
|
||||
|
|
|
|||
Loading…
Reference in a new issue