@@ -500,6 +500,55 @@ def test_get_multi_hit_multiple_keys_different_dataset(self):
500500 with self .assertRaises (ValueError ):
501501 client .get_multi ([key1 , key2 ])
502502
503+ def test_get_multi_diff_prefixes (self ):
504+ from gcloud .datastore .key import Key
505+
506+ DATASET_ID1 = 'DATASET'
507+ DATASET_ID2 = 'e~DATASET'
508+ DATASET_ID3 = 's~DATASET'
509+ KIND = 'Kind'
510+ ID1 = 1234
511+ ID2 = 2345
512+ ID3 = 3456
513+
514+ # Make found entity pbs to be returned from mock backend.
515+ entity_pb1 = _make_entity_pb (DATASET_ID1 , KIND , ID1 )
516+ entity_pb2 = _make_entity_pb (DATASET_ID2 , KIND , ID2 )
517+ entity_pb3 = _make_entity_pb (DATASET_ID3 , KIND , ID3 )
518+
519+ creds = object ()
520+ client = self ._makeOne (credentials = creds )
521+ client .connection ._add_lookup_result ([entity_pb1 ,
522+ entity_pb2 ,
523+ entity_pb3 ])
524+
525+ key1 = Key (KIND , ID1 , dataset_id = DATASET_ID1 )
526+ key2 = Key (KIND , ID2 , dataset_id = DATASET_ID2 )
527+ key3 = Key (KIND , ID3 , dataset_id = DATASET_ID3 )
528+
529+ retrieved_all = client .get_multi ([key1 , key2 , key3 ])
530+ retrieved1 , retrieved2 , retrieved3 = retrieved_all
531+
532+ # Check values & keys match.
533+ self .assertEqual (retrieved1 .key .path , key1 .path )
534+ self .assertEqual (retrieved2 .key .path , key2 .path )
535+ self .assertEqual (retrieved3 .key .path , key3 .path )
536+
537+ def test_get_multi_diff_datasets_w_prefix (self ):
538+ from gcloud .datastore .key import Key
539+
540+ DATASET_ID1 = 'e~DATASET'
541+ DATASET_ID2 = 's~DATASET-ALT'
542+
543+ key1 = Key ('KIND' , 1234 , dataset_id = DATASET_ID1 )
544+ key2 = Key ('KIND' , 1234 , dataset_id = DATASET_ID2 )
545+
546+ creds = object ()
547+ client = self ._makeOne (credentials = creds )
548+
549+ with self .assertRaises (ValueError ):
550+ client .get_multi ([key1 , key2 ])
551+
503552 def test_get_multi_max_loops (self ):
504553 from gcloud ._testing import _Monkey
505554 from gcloud .datastore import client as _MUT
0 commit comments