Ticket #16955: 16955-2.2.patch

File 16955-2.2.patch, 6.1 KB (added by Nate Bragg, 13 years ago)

Fixed tests only

  • django/db/models/sql/query.py

    From f854995a67bd64a8261c048f50b8c4c130304d17 Mon Sep 17 00:00:00 2001
    From: Nate Bragg <jonathan.bragg@alum.rpi.edu>
    Date: Tue, 17 Jan 2012 22:28:55 -0500
    Subject: [PATCH] Modification of dgouldin's patch that fixes tests.
    
    ---
     django/db/models/sql/query.py          |    6 ++++++
     tests/modeltests/many_to_many/tests.py |   10 ++++++++++
     tests/modeltests/many_to_one/tests.py  |    8 ++++++++
     tests/modeltests/one_to_one/tests.py   |   22 +++++++++++++++-------
     4 files changed, 39 insertions(+), 7 deletions(-)
    
    diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py
    index ed2bc06..39a968f 100644
    a b class Query(object):  
    11081108                    can_reuse)
    11091109            return
    11101110
     1111        from django.db.models.base import Model
     1112        from django.db.models.fields.related import RelatedField
     1113        if (isinstance(field, RelatedField) and isinstance(value, Model) and
     1114                not isinstance(value, target.model)):
     1115            raise TypeError, "'%s' instance expected" % target.model._meta.object_name
     1116
    11111117        table_promote = False
    11121118        join_promote = False
    11131119
  • tests/modeltests/many_to_many/tests.py

    diff --git a/tests/modeltests/many_to_many/tests.py b/tests/modeltests/many_to_many/tests.py
    index b00d7da..6370eb0 100644
    a b class ManyToManyTests(TestCase):  
    199199        self.assertQuerysetEqual(Article.objects.exclude(publications=self.p2),
    200200                                 ['<Article: Django lets you build Web apps easily>'])
    201201
     202        # Filter values on related fields are checked to ensure the correct
     203        # model class is being used.
     204        self.assertRaises(TypeError, Article.objects.filter,
     205            publications=self.a1)
     206
    202207    def test_reverse_selects(self):
    203208        # Reverse m2m queries are supported (i.e., starting at the table that
    204209        # doesn't have a ManyToManyField).
    class ManyToManyTests(TestCase):  
    249254                '<Publication: The Python Journal>',
    250255            ])
    251256
     257        # Filter values on related fields are checked to ensure the correct
     258        # model class is being used.
     259        self.assertRaises(TypeError, Publication.objects.filter,
     260             article=self.p1)
     261
    252262    def test_delete(self):
    253263        # If we delete a Publication, its Articles won't be able to access it.
    254264        self.p1.delete()
  • tests/modeltests/many_to_one/tests.py

    diff --git a/tests/modeltests/many_to_one/tests.py b/tests/modeltests/many_to_one/tests.py
    index 922506e..b43bf03 100644
    a b class ManyToOneTests(TestCase):  
    232232                "<Article: This is a test>",
    233233            ])
    234234
     235        # Filter values on related fields are checked to ensure the correct
     236        # model class is being used.
     237        self.assertRaises(TypeError, Article.objects.filter, reporter=self.a)
     238
    235239    def test_reverse_selects(self):
    236240        a3 = Article.objects.create(id=None, headline="Third article",
    237241                                    pub_date=datetime(2005, 7, 27), reporter_id=self.r.id)
    class ManyToOneTests(TestCase):  
    303307            list(Article.objects.filter(reporter=self.r).distinct().order_by()
    304308                 .values('reporter__first_name', 'reporter__last_name')))
    305309
     310        # Filter values on related fields are checked to ensure the correct
     311        # model class is being used.
     312        self.assertRaises(TypeError, Reporter.objects.filter, article=self.r)
     313
    306314    def test_select_related(self):
    307315        # Check that Article.objects.select_related().dates() works properly when
    308316        # there are multiple Articles with the same date but different foreign-key
  • tests/modeltests/one_to_one/tests.py

    diff --git a/tests/modeltests/one_to_one/tests.py b/tests/modeltests/one_to_one/tests.py
    index 6ee7852..6800aef 100644
    a b class OneToOneTests(TestCase):  
    6565        assert_get_restaurant(place__pk=self.p1.pk)
    6666        assert_get_restaurant(place__name__startswith="Demon")
    6767
     68        # Filter values on related fields are checked to ensure the correct
     69        # model class is being used.
     70        self.assertRaises(TypeError, Restaurant.objects.get, place=self.r)
     71
    6872        def assert_get_place(**params):
    6973            self.assertEqual(repr(Place.objects.get(**params)),
    7074                             '<Place: Demon Dogs the place>')
    class OneToOneTests(TestCase):  
    7983        assert_get_place(id__exact=self.p1.pk)
    8084        assert_get_place(pk=self.p1.pk)
    8185
     86        # Filter values on related fields are checked to ensure the correct
     87        # model class is being used.
     88        self.assertRaises(TypeError, Place.objects.get, restaurant=self.p1)
     89
    8290    def test_foreign_key(self):
    8391        # Add a Waiter to the Restaurant.
    8492        w = self.r.waiter_set.create(name='Joe')
    class OneToOneTests(TestCase):  
    92100        assert_filter_waiters(restaurant__place__exact=self.p1.pk)
    93101        assert_filter_waiters(restaurant__place__exact=self.p1)
    94102        assert_filter_waiters(restaurant__place__pk=self.p1.pk)
    95         assert_filter_waiters(restaurant__exact=self.p1.pk)
    96         assert_filter_waiters(restaurant__exact=self.p1)
    97         assert_filter_waiters(restaurant__pk=self.p1.pk)
    98         assert_filter_waiters(restaurant=self.p1.pk)
     103        assert_filter_waiters(restaurant__exact=self.r.pk)
     104        assert_filter_waiters(restaurant__exact=self.r)
     105        assert_filter_waiters(restaurant__pk=self.r.pk)
     106        assert_filter_waiters(restaurant=self.r.pk)
    99107        assert_filter_waiters(restaurant=self.r)
    100         assert_filter_waiters(id__exact=self.p1.pk)
    101         assert_filter_waiters(pk=self.p1.pk)
     108        assert_filter_waiters(id__exact=self.r.pk)
     109        assert_filter_waiters(pk=self.r.pk)
    102110        # Delete the restaurant; the waiter should also be removed
    103         r = Restaurant.objects.get(pk=self.p1.pk)
     111        r = Restaurant.objects.get(pk=self.r.pk)
    104112        r.delete()
    105113        self.assertEqual(Waiter.objects.count(), 0)
    106114
Back to Top