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
	 Blake Eggleston
					Blake Eggleston