adding magic methods for model instance equality comparisons

This commit is contained in:
Blake Eggleston
2013-01-06 10:13:04 -08:00
parent 7990027845
commit e529f33dbe
3 changed files with 58 additions and 1 deletions

View File

@@ -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):
"""

View 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

View File

@@ -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):