Skip to content

Commit 2a212a5

Browse files
committed
Fix datastore: unprefixed ids in client test
1 parent c549677 commit 2a212a5

2 files changed

Lines changed: 44 additions & 2 deletions

File tree

gcloud/datastore/client.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -290,8 +290,8 @@ def get_multi(self, keys, missing=None, deferred=None):
290290
return []
291291

292292
ids = set(key.dataset_id for key in keys)
293-
for ds_id in ids:
294-
if not _dataset_ids_equal(ds_id, self.dataset_id):
293+
for current_id in ids:
294+
if not _dataset_ids_equal(current_id, self.dataset_id):
295295
raise ValueError('Keys do not match dataset ID')
296296

297297
transaction = self.current_transaction

gcloud/datastore/test_client.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -494,6 +494,48 @@ def test_get_multi_hit_multiple_keys_different_dataset(self):
494494
with self.assertRaises(ValueError):
495495
client.get_multi([key1, key2])
496496

497+
def test_get_multi_hit_multiple_keys_different_dataset_prefixes(self):
498+
from gcloud.datastore.key import Key
499+
500+
DATASET_ID1 = 'DATASET'
501+
DATASET_ID2 = 'e~DATASET'
502+
DATASET_ID3 = 's~DATASET'
503+
KIND = 'Kind'
504+
ID1 = 1234
505+
ID2 = 2345
506+
ID3 = 3456
507+
508+
# Make sure our IDs are actually different.
509+
self.assertNotEqual(DATASET_ID1, DATASET_ID2)
510+
self.assertNotEqual(DATASET_ID1, DATASET_ID3)
511+
self.assertNotEqual(DATASET_ID2, DATASET_ID3)
512+
513+
# Make found entity pbs to be returned from mock backend.
514+
entity_pb1 = _make_entity_pb(DATASET_ID1, KIND, ID1)
515+
entity_pb2 = _make_entity_pb(DATASET_ID2, KIND, ID2)
516+
entity_pb3 = _make_entity_pb(DATASET_ID3, KIND, ID3)
517+
518+
creds = object()
519+
client = self._makeOne(credentials=creds)
520+
client.connection._add_lookup_result([entity_pb1,
521+
entity_pb2,
522+
entity_pb3])
523+
524+
key1 = Key(KIND, ID1, dataset_id=DATASET_ID1)
525+
key2 = Key(KIND, ID2, dataset_id=DATASET_ID2)
526+
key3 = Key(KIND, ID3, dataset_id=DATASET_ID3)
527+
528+
retrieved_all = client.get_multi([key1, key2, key3])
529+
retrieved1, retrieved2, retrieved3 = retrieved_all
530+
531+
# Check values & keys match.
532+
self.assertEqual(retrieved1.key.path, key1.path)
533+
self.assertEqual(dict(retrieved1), {})
534+
self.assertEqual(retrieved2.key.path, key2.path)
535+
self.assertEqual(dict(retrieved2), {})
536+
self.assertEqual(retrieved3.key.path, key3.path)
537+
self.assertEqual(dict(retrieved3), {})
538+
497539
def test_get_multi_max_loops(self):
498540
from gcloud._testing import _Monkey
499541
from gcloud.datastore import client as _MUT

0 commit comments

Comments
 (0)