Commit 626fa288 authored by Alex Gaynor's avatar Alex Gaynor
Browse files

Fixed #13813 -- Comparison of DatabaseWrappers doesn't raise errors.

Patch from Lukasz Balcerzak.
parent db2727f9
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -70,7 +70,9 @@ class BaseDatabaseWrapper(object):
        self._thread_ident = thread.get_ident()

    def __eq__(self, other):
        if isinstance(other, BaseDatabaseWrapper):
            return self.alias == other.alias
        return NotImplemented

    def __ne__(self, other):
        return not self == other
+0 −0

Empty file added.

+36 −0
Original line number Diff line number Diff line
from django.test import TestCase
from django.db.backends import BaseDatabaseWrapper


class DummyDatabaseWrapper(BaseDatabaseWrapper):
    pass


class DummyObject(object):
    alias = None


class DbBackendTests(TestCase):
    def test_compare_db_wrapper_with_another_object(self):
        wrapper = BaseDatabaseWrapper({})
        self.assertFalse(wrapper == 'not-a-db-wrapper')

    def test_compare_db_wrapper_with_another_object_with_alias(self):
        wrapper = BaseDatabaseWrapper({})
        obj = DummyObject()
        obj.alias = wrapper.alias = 'foobar'
        self.assertFalse(wrapper == obj)

    def test_negate_compare_db_wrapper_with_another_object(self):
        wrapper = BaseDatabaseWrapper({})
        self.assertTrue(wrapper != 'not-a-db-wrapper')

    def test_compare_db_wrappers(self):
        wrapper1 = DummyDatabaseWrapper({})
        wrapper2 = BaseDatabaseWrapper({})

        wrapper1.alias = wrapper2.alias = 'foo'
        self.assertTrue(wrapper1 == wrapper2)

        wrapper1.alias = 'bar'
        self.assertFalse(wrapper1 == wrapper2)