summaryrefslogtreecommitdiff
path: root/tests/modeltests
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2012-11-02 06:54:00 -0400
committerTim Graham <timograham@gmail.com>2012-11-02 17:59:51 -0400
commitffc649df888ea35d0e6848bf53ee26917fccc27e (patch)
treeae8f44ec3f139aaf1ff1a57c6a04bd3cfa91a8f6 /tests/modeltests
parent6b1f73113ab4d651362b0a4a72512f99e13eddf1 (diff)
[1.5.X] Fixed #15361 - Documented performance considerations for QuerySet.get()
Thanks mmcnickle for the patch. Backport of feaf9f279a from master
Diffstat (limited to 'tests/modeltests')
-rw-r--r--tests/modeltests/basic/tests.py36
1 files changed, 35 insertions, 1 deletions
diff --git a/tests/modeltests/basic/tests.py b/tests/modeltests/basic/tests.py
index ebd70d14d9..1c83b980a7 100644
--- a/tests/modeltests/basic/tests.py
+++ b/tests/modeltests/basic/tests.py
@@ -2,7 +2,7 @@ from __future__ import absolute_import, unicode_literals
from datetime import datetime
-from django.core.exceptions import ObjectDoesNotExist
+from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned
from django.db.models.fields import Field, FieldDoesNotExist
from django.test import TestCase, skipIfDBFeature, skipUnlessDBFeature
from django.utils import six
@@ -128,6 +128,40 @@ class ModelTest(TestCase):
b = Article.objects.get(pk=a.id)
self.assertEqual(a, b)
+ # Create a very similar object
+ a = Article(
+ id=None,
+ headline='Area man programs in Python',
+ pub_date=datetime(2005, 7, 28),
+ )
+ a.save()
+
+ self.assertEqual(Article.objects.count(), 2)
+
+ # Django raises an Article.MultipleObjectsReturned exception if the
+ # lookup matches more than one object
+ self.assertRaisesRegexp(
+ MultipleObjectsReturned,
+ "get\(\) returned more than one Article -- it returned 2!",
+ Article.objects.get,
+ headline__startswith='Area',
+ )
+
+ self.assertRaisesRegexp(
+ MultipleObjectsReturned,
+ "get\(\) returned more than one Article -- it returned 2!",
+ Article.objects.get,
+ pub_date__year=2005,
+ )
+
+ self.assertRaisesRegexp(
+ MultipleObjectsReturned,
+ "get\(\) returned more than one Article -- it returned 2!",
+ Article.objects.get,
+ pub_date__year=2005,
+ pub_date__month=7,
+ )
+
def test_object_creation(self):
# Create an Article.
a = Article(