summaryrefslogtreecommitdiff
path: root/tests/basic/tests.py
diff options
context:
space:
mode:
authorAndrew Godwin <andrew@aeracode.org>2013-08-09 14:17:30 +0100
committerAndrew Godwin <andrew@aeracode.org>2013-08-09 14:17:30 +0100
commitde64c4d6e97c980fb4c0ace045fc4070b3f763d9 (patch)
tree045c8af6a88fa964cf7e284970a6e93d53941a79 /tests/basic/tests.py
parentfddc5957c53bd654312c4a238a8cdcfe5f4ef4cc (diff)
parentb575d690bbc1c4cd7f575346132c09fca8c736a7 (diff)
Merge remote-tracking branch 'core/master' into schema-alteration
Conflicts: django/core/management/commands/flush.py django/core/management/commands/syncdb.py django/db/models/loading.py docs/internals/deprecation.txt docs/ref/django-admin.txt docs/releases/1.7.txt
Diffstat (limited to 'tests/basic/tests.py')
-rw-r--r--tests/basic/tests.py59
1 files changed, 58 insertions, 1 deletions
diff --git a/tests/basic/tests.py b/tests/basic/tests.py
index fb21b11279..55ed6a436f 100644
--- a/tests/basic/tests.py
+++ b/tests/basic/tests.py
@@ -1,4 +1,4 @@
-from __future__ import absolute_import, unicode_literals
+from __future__ import unicode_literals
from datetime import datetime
import threading
@@ -6,6 +6,7 @@ import threading
from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned
from django.db import connections, DEFAULT_DB_ALIAS
from django.db.models.fields import Field, FieldDoesNotExist
+from django.db.models.manager import BaseManager
from django.db.models.query import QuerySet, EmptyQuerySet, ValuesListQuerySet, MAX_GET_RESULTS
from django.test import TestCase, TransactionTestCase, skipIfDBFeature, skipUnlessDBFeature
from django.utils import six
@@ -734,3 +735,59 @@ class ConcurrentSaveTests(TransactionTestCase):
t.join()
a.save()
self.assertEqual(Article.objects.get(pk=a.pk).headline, 'foo')
+
+
+class ManagerTest(TestCase):
+ QUERYSET_PROXY_METHODS = [
+ 'none',
+ 'count',
+ 'dates',
+ 'datetimes',
+ 'distinct',
+ 'extra',
+ 'get',
+ 'get_or_create',
+ 'update_or_create',
+ 'create',
+ 'bulk_create',
+ 'filter',
+ 'aggregate',
+ 'annotate',
+ 'complex_filter',
+ 'exclude',
+ 'in_bulk',
+ 'iterator',
+ 'earliest',
+ 'latest',
+ 'first',
+ 'last',
+ 'order_by',
+ 'select_for_update',
+ 'select_related',
+ 'prefetch_related',
+ 'values',
+ 'values_list',
+ 'update',
+ 'reverse',
+ 'defer',
+ 'only',
+ 'using',
+ 'exists',
+ '_insert',
+ '_update',
+ 'raw',
+ ]
+
+ def test_manager_methods(self):
+ """
+ This test ensures that the correct set of methods from `QuerySet`
+ are copied onto `Manager`.
+
+ It's particularly useful to prevent accidentally leaking new methods
+ into `Manager`. New `QuerySet` methods that should also be copied onto
+ `Manager` will need to be added to `ManagerTest.QUERYSET_PROXY_METHODS`.
+ """
+ self.assertEqual(
+ sorted(BaseManager._get_queryset_methods(QuerySet).keys()),
+ sorted(self.QUERYSET_PROXY_METHODS),
+ )