@@ -35,6 +35,60 @@ def test_it(self):
3535 self .assertTrue (client ._get_app_default_called )
3636
3737
38+ class Test_set_default_dataset (unittest2 .TestCase ):
39+
40+ def setUp (self ):
41+ from gcloud .datastore import _implicit_environ
42+ self ._replaced_dataset = _implicit_environ .DATASET
43+ _implicit_environ .DATASET = None
44+
45+ def tearDown (self ):
46+ from gcloud .datastore import _implicit_environ
47+ _implicit_environ .DATASET = self ._replaced_dataset
48+
49+ def _callFUT (self , dataset_id = None ):
50+ from gcloud .datastore import set_default_dataset
51+ return set_default_dataset (dataset_id = dataset_id )
52+
53+ def _test_with_environ (self , environ , expected_result , dataset_id = None ):
54+ import os
55+ from gcloud ._testing import _Monkey
56+ from gcloud import datastore
57+ from gcloud .datastore import _implicit_environ
58+
59+ # Check the environment is unset.
60+ self .assertEqual (_implicit_environ .DATASET , None )
61+
62+ def custom_getenv (key ):
63+ return environ .get (key )
64+
65+ def custom_get_dataset (local_dataset_id ):
66+ return local_dataset_id
67+
68+ with _Monkey (os , getenv = custom_getenv ):
69+ with _Monkey (datastore , get_dataset = custom_get_dataset ):
70+ self ._callFUT (dataset_id = dataset_id )
71+
72+ self .assertEqual (_implicit_environ .DATASET , expected_result )
73+
74+ def test_set_from_env_var (self ):
75+ from gcloud .datastore import _DATASET_ENV_VAR_NAME
76+
77+ # Make a custom getenv function to Monkey.
78+ DATASET = 'dataset'
79+ VALUES = {
80+ _DATASET_ENV_VAR_NAME : DATASET ,
81+ }
82+ self ._test_with_environ (VALUES , DATASET )
83+
84+ def test_no_env_var_set (self ):
85+ self ._test_with_environ ({}, None )
86+
87+ def test_set_explicit (self ):
88+ DATASET_ID = 'DATASET'
89+ self ._test_with_environ ({}, DATASET_ID , dataset_id = DATASET_ID )
90+
91+
3892class Test_get_dataset (unittest2 .TestCase ):
3993
4094 def _callFUT (self , dataset_id ):
@@ -56,3 +110,67 @@ def test_it(self):
56110 self .assertTrue (isinstance (found .connection (), Connection ))
57111 self .assertEqual (found .id (), DATASET_ID )
58112 self .assertTrue (client ._get_app_default_called )
113+
114+
115+ class Test_implicit_behavior (unittest2 .TestCase ):
116+
117+ def test__require_dataset (self ):
118+ import gcloud .datastore
119+ from gcloud .datastore import _implicit_environ
120+ original_dataset = _implicit_environ .DATASET
121+
122+ try :
123+ _implicit_environ .DATASET = None
124+ self .assertRaises (EnvironmentError ,
125+ gcloud .datastore ._require_dataset )
126+ NEW_DATASET = object ()
127+ _implicit_environ .DATASET = NEW_DATASET
128+ self .assertEqual (gcloud .datastore ._require_dataset (), NEW_DATASET )
129+ finally :
130+ _implicit_environ .DATASET = original_dataset
131+
132+ def test_get_entity (self ):
133+ import gcloud .datastore
134+ from gcloud .datastore import _implicit_environ
135+ from gcloud .datastore .test_entity import _Dataset
136+ from gcloud ._testing import _Monkey
137+
138+ CUSTOM_DATASET = _Dataset ()
139+ DUMMY_KEY = object ()
140+ DUMMY_VAL = object ()
141+ CUSTOM_DATASET [DUMMY_KEY ] = DUMMY_VAL
142+ with _Monkey (_implicit_environ , DATASET = CUSTOM_DATASET ):
143+ result = gcloud .datastore .get_entity (DUMMY_KEY )
144+ self .assertTrue (result is DUMMY_VAL )
145+
146+ def test_get_entities (self ):
147+ import gcloud .datastore
148+ from gcloud .datastore import _implicit_environ
149+ from gcloud .datastore .test_entity import _Dataset
150+ from gcloud ._testing import _Monkey
151+
152+ CUSTOM_DATASET = _Dataset ()
153+ DUMMY_KEYS = [object (), object ()]
154+ DUMMY_VALS = [object (), object ()]
155+ for key , val in zip (DUMMY_KEYS , DUMMY_VALS ):
156+ CUSTOM_DATASET [key ] = val
157+
158+ with _Monkey (_implicit_environ , DATASET = CUSTOM_DATASET ):
159+ result = gcloud .datastore .get_entities (DUMMY_KEYS )
160+ self .assertTrue (result == DUMMY_VALS )
161+
162+ def test_allocate_ids (self ):
163+ import gcloud .datastore
164+ from gcloud .datastore import _implicit_environ
165+ from gcloud .datastore .key import Key
166+ from gcloud .datastore .test_entity import _Dataset
167+ from gcloud ._testing import _Monkey
168+
169+ CUSTOM_DATASET = _Dataset ()
170+ INCOMPLETE_KEY = Key ()
171+ NUM_IDS = 2
172+ with _Monkey (_implicit_environ , DATASET = CUSTOM_DATASET ):
173+ result = gcloud .datastore .allocate_ids (INCOMPLETE_KEY , NUM_IDS )
174+
175+ # Check the IDs returned.
176+ self .assertEqual ([key .id () for key in result ], range (1 , NUM_IDS + 1 ))
0 commit comments