adding magic methods for model instance equality comparisons
This commit is contained in:
@@ -31,6 +31,12 @@ class BaseModel(object):
|
||||
value_mngr = column.value_manager(self, column, value)
|
||||
self._values[name] = value_mngr
|
||||
|
||||
def __eq__(self, other):
|
||||
return self.as_dict() == other.as_dict()
|
||||
|
||||
def __ne__(self, other):
|
||||
return not self.__eq__(other)
|
||||
|
||||
@classmethod
|
||||
def column_family_name(cls, include_keyspace=True):
|
||||
"""
|
||||
|
||||
52
cqlengine/tests/model/test_equality_operations.py
Normal file
52
cqlengine/tests/model/test_equality_operations.py
Normal file
@@ -0,0 +1,52 @@
|
||||
from unittest import skip
|
||||
from cqlengine.tests.base import BaseCassEngTestCase
|
||||
|
||||
from cqlengine.management import create_table
|
||||
from cqlengine.management import delete_table
|
||||
from cqlengine.models import Model
|
||||
from cqlengine import columns
|
||||
|
||||
class TestModel(Model):
|
||||
count = columns.Integer()
|
||||
text = columns.Text(required=False)
|
||||
|
||||
class TestEqualityOperators(BaseCassEngTestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(TestEqualityOperators, cls).setUpClass()
|
||||
create_table(TestModel)
|
||||
|
||||
def setUp(self):
|
||||
super(TestEqualityOperators, self).setUp()
|
||||
self.t0 = TestModel.create(count=5, text='words')
|
||||
self.t1 = TestModel.create(count=5, text='words')
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
super(TestEqualityOperators, cls).tearDownClass()
|
||||
delete_table(TestModel)
|
||||
|
||||
def test_an_instance_evaluates_as_equal_to_itself(self):
|
||||
"""
|
||||
"""
|
||||
assert self.t0 == self.t0
|
||||
|
||||
def test_two_instances_referencing_the_same_rows_and_different_values_evaluate_not_equal(self):
|
||||
"""
|
||||
"""
|
||||
t0 = TestModel.get(id=self.t0.id)
|
||||
t0.text = 'bleh'
|
||||
assert t0 != self.t0
|
||||
|
||||
def test_two_instances_referencing_the_same_rows_and_values_evaluate_equal(self):
|
||||
"""
|
||||
"""
|
||||
t0 = TestModel.get(id=self.t0.id)
|
||||
assert t0 == self.t0
|
||||
|
||||
def test_two_instances_referencing_different_rows_evaluate_to_not_equal(self):
|
||||
"""
|
||||
"""
|
||||
assert self.t0 != self.t1
|
||||
|
||||
@@ -4,7 +4,6 @@ from cqlengine.tests.base import BaseCassEngTestCase
|
||||
from cqlengine.management import create_table
|
||||
from cqlengine.management import delete_table
|
||||
from cqlengine.models import Model
|
||||
from cqlengine.models import Model
|
||||
from cqlengine import columns
|
||||
|
||||
class TestModel(Model):
|
||||
|
||||
Reference in New Issue
Block a user