@@ -46,6 +46,88 @@ def test_dataset(self):
4646 self .assertEqual (dataset .name , DATASET )
4747 self .assertTrue (dataset ._client is client )
4848
49+ def test_list_datasets_defaults (self ):
50+ from gcloud .bigquery .dataset import Dataset
51+ PROJECT = 'PROJECT'
52+ DATASET_1 = 'dataset_one'
53+ DATASET_2 = 'dataset_two'
54+ PATH = 'projects/%s/datasets' % PROJECT
55+ TOKEN = 'TOKEN'
56+ DATA = {
57+ 'nextPageToken' : TOKEN ,
58+ 'datasets' : [
59+ {'kind' : 'bigquery#dataset' ,
60+ 'id' : '%s:%s' % (PROJECT , DATASET_1 ),
61+ 'datasetReference' : {'datasetId' : DATASET_1 ,
62+ 'projectId' : PROJECT },
63+ 'friendlyName' : None },
64+ {'kind' : 'bigquery#dataset' ,
65+ 'id' : '%s:%s' % (PROJECT , DATASET_2 ),
66+ 'datasetReference' : {'datasetId' : DATASET_2 ,
67+ 'projectId' : PROJECT },
68+ 'friendlyName' : 'Two' },
69+ ]
70+ }
71+ creds = _Credentials ()
72+ client = self ._makeOne (PROJECT , creds )
73+ conn = client .connection = _Connection (DATA )
74+
75+ datasets , token = client .list_datasets ()
76+
77+ self .assertEqual (len (datasets ), len (DATA ['datasets' ]))
78+ for found , expected in zip (datasets , DATA ['datasets' ]):
79+ self .assertTrue (isinstance (found , Dataset ))
80+ self .assertEqual (found .dataset_id , expected ['id' ])
81+ self .assertEqual (found .friendly_name , expected ['friendlyName' ])
82+ self .assertEqual (token , TOKEN )
83+
84+ self .assertEqual (len (conn ._requested ), 1 )
85+ req = conn ._requested [0 ]
86+ self .assertEqual (req ['method' ], 'GET' )
87+ self .assertEqual (req ['path' ], '/%s' % PATH )
88+
89+ def test_list_datasets_explicit (self ):
90+ from gcloud .bigquery .dataset import Dataset
91+ PROJECT = 'PROJECT'
92+ DATASET_1 = 'dataset_one'
93+ DATASET_2 = 'dataset_two'
94+ PATH = 'projects/%s/datasets' % PROJECT
95+ TOKEN = 'TOKEN'
96+ DATA = {
97+ 'datasets' : [
98+ {'kind' : 'bigquery#dataset' ,
99+ 'id' : '%s:%s' % (PROJECT , DATASET_1 ),
100+ 'datasetReference' : {'datasetId' : DATASET_1 ,
101+ 'projectId' : PROJECT },
102+ 'friendlyName' : None },
103+ {'kind' : 'bigquery#dataset' ,
104+ 'id' : '%s:%s' % (PROJECT , DATASET_2 ),
105+ 'datasetReference' : {'datasetId' : DATASET_2 ,
106+ 'projectId' : PROJECT },
107+ 'friendlyName' : 'Two' },
108+ ]
109+ }
110+ creds = _Credentials ()
111+ client = self ._makeOne (PROJECT , creds )
112+ conn = client .connection = _Connection (DATA )
113+
114+ datasets , token = client .list_datasets (
115+ include_all = True , max_results = 3 , page_token = TOKEN )
116+
117+ self .assertEqual (len (datasets ), len (DATA ['datasets' ]))
118+ for found , expected in zip (datasets , DATA ['datasets' ]):
119+ self .assertTrue (isinstance (found , Dataset ))
120+ self .assertEqual (found .dataset_id , expected ['id' ])
121+ self .assertEqual (found .friendly_name , expected ['friendlyName' ])
122+ self .assertEqual (token , None )
123+
124+ self .assertEqual (len (conn ._requested ), 1 )
125+ req = conn ._requested [0 ]
126+ self .assertEqual (req ['method' ], 'GET' )
127+ self .assertEqual (req ['path' ], '/%s' % PATH )
128+ self .assertEqual (req ['query_params' ],
129+ {'all' : True , 'maxResults' : 3 , 'pageToken' : TOKEN })
130+
49131
50132class _Credentials (object ):
51133
@@ -58,3 +140,15 @@ def create_scoped_required():
58140 def create_scoped (self , scope ):
59141 self ._scopes = scope
60142 return self
143+
144+
145+ class _Connection (object ):
146+
147+ def __init__ (self , * responses ):
148+ self ._responses = responses
149+ self ._requested = []
150+
151+ def api_request (self , ** kw ):
152+ self ._requested .append (kw )
153+ response , self ._responses = self ._responses [0 ], self ._responses [1 :]
154+ return response
0 commit comments