@@ -213,6 +213,56 @@ def test_set_implicit_three_env_appengine_and_compute(self):
213
213
self .assertEqual (connection .timeout , None )
214
214
215
215
216
+ class Test_lazy_loaded_dataset_id (unittest2 .TestCase ):
217
+
218
+ def setUp (self ):
219
+ from gcloud .datastore import _implicit_environ
220
+ self ._replaced_default = _implicit_environ .DEFAULT_ENVIRON
221
+ _implicit_environ .DEFAULT_ENVIRON = _implicit_environ .Environment ()
222
+
223
+ def tearDown (self ):
224
+ from gcloud .datastore import _implicit_environ
225
+ _implicit_environ .DEFAULT_ENVIRON = self ._replaced_default
226
+
227
+ def test_prop_default (self ):
228
+ from gcloud .datastore import _implicit_environ
229
+ from gcloud .datastore ._implicit_environ import Environment
230
+
231
+ self .assertTrue (isinstance (Environment .dataset_id ,
232
+ _implicit_environ ._DatasetIDProperty ))
233
+ self .assertEqual (_implicit_environ .DEFAULT_ENVIRON .dataset_id , None )
234
+
235
+ def test_prop_on_wrong_class (self ):
236
+ from gcloud .datastore import _implicit_environ
237
+
238
+ data_prop = _implicit_environ ._DatasetIDProperty ()
239
+
240
+ class FakeEnv (object ):
241
+ dataset_id = data_prop
242
+
243
+ self .assertTrue (FakeEnv .dataset_id is data_prop )
244
+ self .assertTrue (FakeEnv ().dataset_id is data_prop )
245
+
246
+ def test_prop_descriptor (self ):
247
+ from gcloud ._testing import _Monkey
248
+ from gcloud .datastore import _implicit_environ
249
+
250
+ self .assertFalse (
251
+ 'dataset_id' in _implicit_environ .DEFAULT_ENVIRON .__dict__ )
252
+
253
+ DEFAULT = object ()
254
+
255
+ def mock_default ():
256
+ return DEFAULT
257
+
258
+ with _Monkey (_implicit_environ , get_default_dataset_id = mock_default ):
259
+ lazy_loaded = _implicit_environ .DEFAULT_ENVIRON .dataset_id
260
+
261
+ self .assertEqual (lazy_loaded , DEFAULT )
262
+ self .assertTrue (
263
+ 'dataset_id' in _implicit_environ .DEFAULT_ENVIRON .__dict__ )
264
+
265
+
216
266
class _AppIdentity (object ):
217
267
218
268
def __init__ (self , app_id ):
0 commit comments