|
61 | 61 | from google.cloud.bigquery import job as bqjob |
62 | 62 | import google.cloud.bigquery._job_helpers |
63 | 63 | from google.cloud.bigquery.dataset import DatasetReference, Dataset |
64 | | -from google.cloud.bigquery.enums import UpdateMode |
| 64 | +from google.cloud.bigquery.enums import UpdateMode, DatasetView |
65 | 65 | from google.cloud.bigquery import exceptions |
66 | 66 | from google.cloud.bigquery import ParquetOptions |
67 | 67 | import google.cloud.bigquery.retry |
@@ -753,7 +753,7 @@ def test_get_dataset(self): |
753 | 753 | final_attributes.assert_called_once_with({"path": "/%s" % path}, client, None) |
754 | 754 |
|
755 | 755 | conn.api_request.assert_called_once_with( |
756 | | - method="GET", path="/%s" % path, timeout=7.5 |
| 756 | + method="GET", path="/%s" % path, timeout=7.5, query_params={} |
757 | 757 | ) |
758 | 758 | self.assertEqual(dataset.dataset_id, self.DS_ID) |
759 | 759 |
|
@@ -819,6 +819,72 @@ def test_get_dataset(self): |
819 | 819 |
|
820 | 820 | self.assertEqual(dataset.dataset_id, self.DS_ID) |
821 | 821 |
|
| 822 | + def test_get_dataset_with_dataset_view(self): |
| 823 | + path = "projects/%s/datasets/%s" % (self.PROJECT, self.DS_ID) |
| 824 | + creds = _make_credentials() |
| 825 | + http = object() |
| 826 | + client = self._make_one(project=self.PROJECT, credentials=creds, _http=http) |
| 827 | + resource = { |
| 828 | + "id": "%s:%s" % (self.PROJECT, self.DS_ID), |
| 829 | + "datasetReference": {"projectId": self.PROJECT, "datasetId": self.DS_ID}, |
| 830 | + } |
| 831 | + dataset_ref = DatasetReference(self.PROJECT, self.DS_ID) |
| 832 | + |
| 833 | + test_cases = [ |
| 834 | + (None, None), |
| 835 | + (DatasetView.DATASET_VIEW_UNSPECIFIED, "DATASET_VIEW_UNSPECIFIED"), |
| 836 | + (DatasetView.METADATA, "METADATA"), |
| 837 | + (DatasetView.ACL, "ACL"), |
| 838 | + (DatasetView.FULL, "FULL"), |
| 839 | + ] |
| 840 | + |
| 841 | + for dataset_view_arg, expected_param_value in test_cases: |
| 842 | + with self.subTest( |
| 843 | + dataset_view_arg=dataset_view_arg, |
| 844 | + expected_param_value=expected_param_value, |
| 845 | + ): |
| 846 | + # Re-initialize the connection mock for each sub-test to reset side_effect |
| 847 | + conn = client._connection = make_connection(resource) |
| 848 | + |
| 849 | + dataset = client.get_dataset(dataset_ref, dataset_view=dataset_view_arg) |
| 850 | + |
| 851 | + self.assertEqual(dataset.dataset_id, self.DS_ID) |
| 852 | + |
| 853 | + if expected_param_value: |
| 854 | + expected_query_params = {"datasetView": expected_param_value} |
| 855 | + else: |
| 856 | + expected_query_params = {} |
| 857 | + |
| 858 | + conn.api_request.assert_called_once_with( |
| 859 | + method="GET", |
| 860 | + path="/%s" % path, |
| 861 | + timeout=DEFAULT_TIMEOUT, |
| 862 | + query_params=expected_query_params if expected_query_params else {}, |
| 863 | + ) |
| 864 | + |
| 865 | + def test_get_dataset_with_invalid_dataset_view(self): |
| 866 | + invalid_view_values = [ |
| 867 | + "INVALID_STRING", |
| 868 | + 123, |
| 869 | + 123.45, |
| 870 | + object(), |
| 871 | + ] |
| 872 | + creds = _make_credentials() |
| 873 | + http = object() |
| 874 | + client = self._make_one(project=self.PROJECT, credentials=creds, _http=http) |
| 875 | + resource = { |
| 876 | + "id": "%s:%s" % (self.PROJECT, self.DS_ID), |
| 877 | + "datasetReference": {"projectId": self.PROJECT, "datasetId": self.DS_ID}, |
| 878 | + } |
| 879 | + conn = client._connection = make_connection(resource) |
| 880 | + dataset_ref = DatasetReference(self.PROJECT, self.DS_ID) |
| 881 | + |
| 882 | + for invalid_view_value in invalid_view_values: |
| 883 | + with self.subTest(invalid_view_value=invalid_view_value): |
| 884 | + conn.api_request.reset_mock() # Reset mock for each sub-test |
| 885 | + with self.assertRaises(AttributeError): |
| 886 | + client.get_dataset(dataset_ref, dataset_view=invalid_view_value) |
| 887 | + |
822 | 888 | def test_ensure_bqstorage_client_creating_new_instance(self): |
823 | 889 | bigquery_storage = pytest.importorskip("google.cloud.bigquery_storage") |
824 | 890 |
|
|
0 commit comments