@@ -46,6 +46,88 @@ def test_dataset(self):
46
46
self .assertEqual (dataset .name , DATASET )
47
47
self .assertTrue (dataset ._client is client )
48
48
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
+
49
131
50
132
class _Credentials (object ):
51
133
@@ -58,3 +140,15 @@ def create_scoped_required():
58
140
def create_scoped (self , scope ):
59
141
self ._scopes = scope
60
142
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