Fixed #13813 -- Comparison of DatabaseWrappers doesn't raise errors.
Patch from Lukasz Balcerzak.
This commit is contained in:
parent
db2727f952
commit
626fa28878
|
@ -70,7 +70,9 @@ class BaseDatabaseWrapper(object):
|
|||
self._thread_ident = thread.get_ident()
|
||||
|
||||
def __eq__(self, other):
|
||||
return self.alias == other.alias
|
||||
if isinstance(other, BaseDatabaseWrapper):
|
||||
return self.alias == other.alias
|
||||
return NotImplemented
|
||||
|
||||
def __ne__(self, other):
|
||||
return not self == other
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
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)
|
Loading…
Reference in New Issue