summaryrefslogtreecommitdiff
path: root/tests/get_object_or_404
diff options
context:
space:
mode:
Diffstat (limited to 'tests/get_object_or_404')
-rw-r--r--tests/get_object_or_404/models.py6
-rw-r--r--tests/get_object_or_404/tests.py10
2 files changed, 16 insertions, 0 deletions
diff --git a/tests/get_object_or_404/models.py b/tests/get_object_or_404/models.py
index b18918a853..04f22dd049 100644
--- a/tests/get_object_or_404/models.py
+++ b/tests/get_object_or_404/models.py
@@ -25,11 +25,17 @@ class ArticleManager(models.Manager):
return super().get_queryset().filter(authors__name__icontains='sir')
+class AttributeErrorManager(models.Manager):
+ def get_queryset(self):
+ raise AttributeError('AttributeErrorManager')
+
+
class Article(models.Model):
authors = models.ManyToManyField(Author)
title = models.CharField(max_length=50)
objects = models.Manager()
by_a_sir = ArticleManager()
+ attribute_error_objects = AttributeErrorManager()
def __str__(self):
return self.title
diff --git a/tests/get_object_or_404/tests.py b/tests/get_object_or_404/tests.py
index a72b766524..075f9a08e1 100644
--- a/tests/get_object_or_404/tests.py
+++ b/tests/get_object_or_404/tests.py
@@ -94,3 +94,13 @@ class GetObjectOr404Tests(TestCase):
msg = "First argument to get_list_or_404() must be a Model, Manager, or QuerySet, not 'list'."
with self.assertRaisesMessage(ValueError, msg):
get_list_or_404([Article], title__icontains="Run")
+
+ def test_get_object_or_404_queryset_attribute_error(self):
+ """AttributeError raised by QuerySet.get() isn't hidden."""
+ with self.assertRaisesMessage(AttributeError, 'AttributeErrorManager'):
+ get_object_or_404(Article.attribute_error_objects, id=42)
+
+ def test_get_list_or_404_queryset_attribute_error(self):
+ """AttributeError raised by QuerySet.filter() isn't hidden."""
+ with self.assertRaisesMessage(AttributeError, 'AttributeErrorManager'):
+ get_list_or_404(Article.attribute_error_objects, title__icontains='Run')