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