Skip to content

Commit d73e3ea

Browse files
committed
test edits, linting, etc.
1 parent 0bf5119 commit d73e3ea

File tree

4 files changed

+68
-43
lines changed

4 files changed

+68
-43
lines changed

google/cloud/bigquery/client.py

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -866,10 +866,22 @@ def get_dataset(
866866
How to retry the RPC.
867867
timeout (Optional[float]):
868868
The number of seconds to wait for the underlying HTTP transport
869-
before using ``retry``.
869+
before using ``retry`
870870
dataset_view (Optional[google.cloud.bigquery.enums.DatasetView]):
871-
Specifies the level of detail to return. Defaults to None, which
872-
returns the default representation of the dataset.
871+
# TODO clean up this docstring.
872+
Specifies the level of detail to include for the dataset resource.
873+
If provided and not None, this parameter controls which parts of the
874+
dataset resource are returned.
875+
Possible enum values:
876+
- :attr:`~google.cloud.bigquery.enums.DatasetView.ACL`:
877+
Includes dataset metadata and the ACL.
878+
- :attr:`~google.cloud.bigquery.enums.DatasetView.FULL`:
879+
Includes all dataset metadata, including the ACL and table metadata.
880+
This view is not supported by the `datasets.list` API method.
881+
- :attr:`~google.cloud.bigquery.enums.DatasetView.METADATA`:
882+
Includes basic dataset metadata, but not the ACL.
883+
- :attr:`~google.cloud.bigquery.enums.DatasetView.DATASET_VIEW_UNSPECIFIED`:
884+
The server will decide which view to use.
873885
874886
Returns:
875887
google.cloud.bigquery.dataset.Dataset:
@@ -880,9 +892,12 @@ def get_dataset(
880892
dataset_ref, default_project=self.project
881893
)
882894
path = dataset_ref.path
883-
params: Dict[str, Any] = {}
884-
if dataset_view is not None:
885-
params["view"] = dataset_view.value
895+
896+
if dataset_view:
897+
query_params = {"view": dataset_view.value}
898+
else:
899+
query_params = {}
900+
886901
span_attributes = {"path": path}
887902
api_response = self._call_api(
888903
retry,
@@ -891,7 +906,7 @@ def get_dataset(
891906
method="GET",
892907
path=path,
893908
timeout=timeout,
894-
query_params=params if params else None,
909+
query_params=query_params,
895910
)
896911
return Dataset.from_api_repr(api_response)
897912

google/cloud/bigquery/enums.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ class CreateDisposition(object):
8181

8282

8383
class DatasetView(enum.Enum):
84+
# TODO add descriptions
8485
DATASET_VIEW_UNSPECIFIED = "DATASET_VIEW_UNSPECIFIED"
8586
METADATA = "METADATA"
8687
ACL = "ACL"

tests/unit/test_client.py

Lines changed: 39 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -742,7 +742,7 @@ def test_get_dataset(self):
742742
final_attributes.assert_called_once_with({"path": "/%s" % path}, client, None)
743743

744744
conn.api_request.assert_called_once_with(
745-
method="GET", path="/%s" % path, timeout=7.5
745+
method="GET", path="/%s" % path, timeout=7.5, query_params={}
746746
)
747747
self.assertEqual(dataset.dataset_id, self.DS_ID)
748748

@@ -808,19 +808,7 @@ def test_get_dataset(self):
808808

809809
self.assertEqual(dataset.dataset_id, self.DS_ID)
810810

811-
@pytest.mark.parametrize(
812-
"dataset_view_arg,expected_param_value",
813-
[
814-
(None, None),
815-
(DatasetView.DATASET_VIEW_UNSPECIFIED, "DATASET_VIEW_UNSPECIFIED"),
816-
(DatasetView.METADATA, "METADATA"),
817-
(DatasetView.ACL, "ACL"),
818-
(DatasetView.FULL, "FULL"),
819-
],
820-
)
821-
def test_get_dataset_with_dataset_view(
822-
self, dataset_view_arg, expected_param_value
823-
):
811+
def test_get_dataset_with_dataset_view(self):
824812
path = "projects/%s/datasets/%s" % (self.PROJECT, self.DS_ID)
825813
creds = _make_credentials()
826814
http = object()
@@ -829,34 +817,47 @@ def test_get_dataset_with_dataset_view(
829817
"id": "%s:%s" % (self.PROJECT, self.DS_ID),
830818
"datasetReference": {"projectId": self.PROJECT, "datasetId": self.DS_ID},
831819
}
832-
conn = client._connection = make_connection(resource)
833820
dataset_ref = DatasetReference(self.PROJECT, self.DS_ID)
834821

835-
dataset = client.get_dataset(dataset_ref, dataset_view=dataset_view_arg)
822+
test_cases = [
823+
(None, None),
824+
(DatasetView.DATASET_VIEW_UNSPECIFIED, "DATASET_VIEW_UNSPECIFIED"),
825+
(DatasetView.METADATA, "METADATA"),
826+
(DatasetView.ACL, "ACL"),
827+
(DatasetView.FULL, "FULL"),
828+
]
829+
830+
for dataset_view_arg, expected_param_value in test_cases:
831+
with self.subTest(
832+
dataset_view_arg=dataset_view_arg,
833+
expected_param_value=expected_param_value,
834+
):
835+
# Re-initialize the connection mock for each sub-test to reset side_effect
836+
conn = client._connection = make_connection(resource)
836837

837-
self.assertEqual(dataset.dataset_id, self.DS_ID)
838-
expected_query_params = {}
839-
if expected_param_value is not None:
840-
expected_query_params["view"] = expected_param_value
838+
dataset = client.get_dataset(dataset_ref, dataset_view=dataset_view_arg)
841839

842-
conn.api_request.assert_called_once_with(
843-
method="GET",
844-
path="/%s" % path,
845-
timeout=DEFAULT_TIMEOUT,
846-
query_params=expected_query_params if expected_query_params else None,
847-
)
840+
self.assertEqual(dataset.dataset_id, self.DS_ID)
841+
842+
if expected_param_value:
843+
expected_query_params = {"view": expected_param_value}
844+
else:
845+
expected_query_params = {}
848846

849-
@pytest.mark.parametrize(
850-
"invalid_view_value",
851-
[
847+
conn.api_request.assert_called_once_with(
848+
method="GET",
849+
path="/%s" % path,
850+
timeout=DEFAULT_TIMEOUT,
851+
query_params=expected_query_params if expected_query_params else {},
852+
)
853+
854+
def test_get_dataset_with_invalid_dataset_view(self):
855+
invalid_view_values = [
852856
"INVALID_STRING",
853857
123,
854858
123.45,
855859
object(),
856-
],
857-
)
858-
def test_get_dataset_with_invalid_dataset_view(self, invalid_view_value):
859-
path = "projects/%s/datasets/%s" % (self.PROJECT, self.DS_ID)
860+
]
860861
creds = _make_credentials()
861862
http = object()
862863
client = self._make_one(project=self.PROJECT, credentials=creds, _http=http)
@@ -867,8 +868,11 @@ def test_get_dataset_with_invalid_dataset_view(self, invalid_view_value):
867868
conn = client._connection = make_connection(resource)
868869
dataset_ref = DatasetReference(self.PROJECT, self.DS_ID)
869870

870-
with pytest.raises(AttributeError):
871-
client.get_dataset(dataset_ref, dataset_view=invalid_view_value)
871+
for invalid_view_value in invalid_view_values:
872+
with self.subTest(invalid_view_value=invalid_view_value):
873+
conn.api_request.reset_mock() # Reset mock for each sub-test
874+
with self.assertRaises(AttributeError):
875+
client.get_dataset(dataset_ref, dataset_view=invalid_view_value)
872876

873877
def test_ensure_bqstorage_client_creating_new_instance(self):
874878
bigquery_storage = pytest.importorskip("google.cloud.bigquery_storage")

tests/unit/test_create_dataset.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,12 @@ def test_create_dataset_alreadyexists_w_exists_ok_true(PROJECT, DS_ID, LOCATION)
372372
},
373373
timeout=DEFAULT_TIMEOUT,
374374
),
375-
mock.call(method="GET", path=get_path, timeout=DEFAULT_TIMEOUT),
375+
mock.call(
376+
method="GET",
377+
path=get_path,
378+
timeout=DEFAULT_TIMEOUT,
379+
query_params={},
380+
),
376381
]
377382
)
378383

0 commit comments

Comments
 (0)