Skip to content

Commit d5bbb14

Browse files
committed
Merge pull request #1347 from dhermes/fix-1313
Adding excludes and meanings to Entity equality check.
2 parents 1b5ca83 + 1919544 commit d5bbb14

2 files changed

Lines changed: 47 additions & 2 deletions

File tree

gcloud/datastore/entity.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@ def __eq__(self, other):
9898
return False
9999

100100
return (self.key == other.key and
101+
self._exclude_from_indexes == other._exclude_from_indexes and
102+
self._meanings == other._meanings and
101103
super(Entity, self).__eq__(other))
102104

103105
def __ne__(self, other):

gcloud/datastore/test_entity.py

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,21 @@ def test___eq_____ne___w_different_keys(self):
7070

7171
def test___eq_____ne___w_same_keys(self):
7272
from gcloud.datastore.key import Key
73+
74+
name = 'foo'
75+
value = 42
76+
meaning = 9
77+
7378
key1 = Key(_KIND, _ID, dataset_id=_DATASET_ID)
74-
entity1 = self._makeOne(key=key1)
79+
entity1 = self._makeOne(key=key1, exclude_from_indexes=(name,))
80+
entity1[name] = value
81+
entity1._meanings[name] = (meaning, value)
82+
7583
key2 = Key(_KIND, _ID, dataset_id=_DATASET_ID)
76-
entity2 = self._makeOne(key=key2)
84+
entity2 = self._makeOne(key=key2, exclude_from_indexes=(name,))
85+
entity2[name] = value
86+
entity2._meanings[name] = (meaning, value)
87+
7788
self.assertTrue(entity1 == entity2)
7889
self.assertFalse(entity1 != entity2)
7990

@@ -140,6 +151,38 @@ def test___eq_____ne___w_same_keys_props_w_diff_entities_as_value(self):
140151
self.assertFalse(entity1 == entity2)
141152
self.assertTrue(entity1 != entity2)
142153

154+
def test__eq__same_value_different_exclude(self):
155+
from gcloud.datastore.key import Key
156+
157+
name = 'foo'
158+
value = 42
159+
key = Key(_KIND, _ID, dataset_id=_DATASET_ID)
160+
161+
entity1 = self._makeOne(key=key, exclude_from_indexes=(name,))
162+
entity1[name] = value
163+
164+
entity2 = self._makeOne(key=key, exclude_from_indexes=())
165+
entity2[name] = value
166+
167+
self.assertFalse(entity1 == entity2)
168+
169+
def test__eq__same_value_different_meanings(self):
170+
from gcloud.datastore.key import Key
171+
172+
name = 'foo'
173+
value = 42
174+
meaning = 9
175+
key = Key(_KIND, _ID, dataset_id=_DATASET_ID)
176+
177+
entity1 = self._makeOne(key=key, exclude_from_indexes=(name,))
178+
entity1[name] = value
179+
180+
entity2 = self._makeOne(key=key, exclude_from_indexes=(name,))
181+
entity2[name] = value
182+
entity2._meanings[name] = (meaning, value)
183+
184+
self.assertFalse(entity1 == entity2)
185+
143186
def test___repr___no_key_empty(self):
144187
entity = self._makeOne()
145188
self.assertEqual(repr(entity), '<Entity {}>')

0 commit comments

Comments
 (0)