From e23c32defa536296b120ee401af5231885829520 Mon Sep 17 00:00:00 2001 From: Bora Berke Sahin <67373739+boraberke@users.noreply.github.com> Date: Thu, 20 Jun 2024 14:10:39 +0300 Subject: [PATCH] Resolve deprecations in the tests for `Google Analytics` operators & hooks (#40328) --- tests/deprecations_ignore.yml | 15 --- .../hooks/test_analytics.py | 25 ++-- .../operators/test_analytics.py | 113 +++++++++++------- 3 files changed, 88 insertions(+), 65 deletions(-) diff --git a/tests/deprecations_ignore.yml b/tests/deprecations_ignore.yml index 172fc78418f48..dd4bd41b7639f 100644 --- a/tests/deprecations_ignore.yml +++ b/tests/deprecations_ignore.yml @@ -239,21 +239,6 @@ - tests/providers/google/cloud/transfers/test_gcs_to_gcs.py::TestGoogleCloudStorageToCloudStorageOperator::test_wc_with_last_modified_time_with_all_true_cond - tests/providers/google/cloud/transfers/test_gcs_to_gcs.py::TestGoogleCloudStorageToCloudStorageOperator::test_wc_with_last_modified_time_with_one_true_cond - tests/providers/google/cloud/transfers/test_gcs_to_gcs.py::TestGoogleCloudStorageToCloudStorageOperator::test_wc_with_no_last_modified_time -- tests/providers/google/marketing_platform/hooks/test_analytics.py::TestGoogleAnalyticsHook::test_delete_upload_data -- tests/providers/google/marketing_platform/hooks/test_analytics.py::TestGoogleAnalyticsHook::test_gen_conn -- tests/providers/google/marketing_platform/hooks/test_analytics.py::TestGoogleAnalyticsHook::test_get_ad_words_links_call -- tests/providers/google/marketing_platform/hooks/test_analytics.py::TestGoogleAnalyticsHook::test_init -- tests/providers/google/marketing_platform/hooks/test_analytics.py::TestGoogleAnalyticsHook::test_list_accounts -- tests/providers/google/marketing_platform/hooks/test_analytics.py::TestGoogleAnalyticsHook::test_list_accounts_for_multiple_pages -- tests/providers/google/marketing_platform/hooks/test_analytics.py::TestGoogleAnalyticsHook::test_list_ad_words_links -- tests/providers/google/marketing_platform/hooks/test_analytics.py::TestGoogleAnalyticsHook::test_list_ad_words_links_for_multiple_pages -- tests/providers/google/marketing_platform/hooks/test_analytics.py::TestGoogleAnalyticsHook::test_list_upload -- tests/providers/google/marketing_platform/hooks/test_analytics.py::TestGoogleAnalyticsHook::test_upload_data -- tests/providers/google/marketing_platform/operators/test_analytics.py::TestGoogleAnalyticsDataImportUploadOperator::test_execute -- tests/providers/google/marketing_platform/operators/test_analytics.py::TestGoogleAnalyticsDeletePreviousDataUploadsOperator::test_execute -- tests/providers/google/marketing_platform/operators/test_analytics.py::TestGoogleAnalyticsGetAdsLinkOperator::test_execute -- tests/providers/google/marketing_platform/operators/test_analytics.py::TestGoogleAnalyticsListAccountsOperator::test_execute -- tests/providers/google/marketing_platform/operators/test_analytics.py::TestGoogleAnalyticsRetrieveAdsLinksListOperator::test_execute - tests/providers/jdbc/operators/test_jdbc.py::TestJdbcOperator::test_execute_do_push - tests/providers/jdbc/operators/test_jdbc.py::TestJdbcOperator::test_execute_dont_push - tests/providers/microsoft/azure/hooks/test_adx.py::TestAzureDataExplorerHook::test_backcompat_prefix_works diff --git a/tests/providers/google/marketing_platform/hooks/test_analytics.py b/tests/providers/google/marketing_platform/hooks/test_analytics.py index 9781d7dd5a44d..e7010b9898bf7 100644 --- a/tests/providers/google/marketing_platform/hooks/test_analytics.py +++ b/tests/providers/google/marketing_platform/hooks/test_analytics.py @@ -17,8 +17,12 @@ # under the License. from __future__ import annotations +import warnings from unittest import mock +import pytest + +from airflow.exceptions import AirflowProviderDeprecationWarning from airflow.providers.google.marketing_platform.hooks.analytics import GoogleAnalyticsHook from tests.providers.google.cloud.utils.base_gcp_mock import mock_base_gcp_hook_default_project_id @@ -30,6 +34,11 @@ GCP_CONN_ID = "test_gcp_conn_id" DELEGATE_TO = "TEST_DELEGATE_TO" IMPERSONATION_CHAIN = ["ACCOUNT_1", "ACCOUNT_2", "ACCOUNT_3"] +DEPRECATION_MESSAGE = ( + r"Call to deprecated class GoogleAnalyticsHook\." + r" \(The `GoogleAnalyticsHook` class is deprecated," + r" please use `GoogleAnalyticsAdminHook` instead\.\)" +) class TestGoogleAnalyticsHook: @@ -37,17 +46,19 @@ def setup_method(self): with mock.patch( "airflow.providers.google.common.hooks.base_google.GoogleBaseHook.__init__", new=mock_base_gcp_hook_default_project_id, - ): + ), warnings.catch_warnings(): + warnings.simplefilter("ignore", AirflowProviderDeprecationWarning) self.hook = GoogleAnalyticsHook(API_VERSION, GCP_CONN_ID) @mock.patch("airflow.providers.google.common.hooks.base_google.GoogleBaseHook.__init__") def test_init(self, mock_base_init): - hook = GoogleAnalyticsHook( - API_VERSION, - GCP_CONN_ID, - delegate_to=DELEGATE_TO, - impersonation_chain=IMPERSONATION_CHAIN, - ) + with pytest.warns(AirflowProviderDeprecationWarning, match=DEPRECATION_MESSAGE): + hook = GoogleAnalyticsHook( + API_VERSION, + GCP_CONN_ID, + delegate_to=DELEGATE_TO, + impersonation_chain=IMPERSONATION_CHAIN, + ) mock_base_init.assert_called_once_with( GCP_CONN_ID, delegate_to=DELEGATE_TO, diff --git a/tests/providers/google/marketing_platform/operators/test_analytics.py b/tests/providers/google/marketing_platform/operators/test_analytics.py index 455b8e605a2f6..5405ed489dd24 100644 --- a/tests/providers/google/marketing_platform/operators/test_analytics.py +++ b/tests/providers/google/marketing_platform/operators/test_analytics.py @@ -19,6 +19,9 @@ from tempfile import NamedTemporaryFile from unittest import mock +import pytest + +from airflow.exceptions import AirflowProviderDeprecationWarning from airflow.providers.google.marketing_platform.operators.analytics import ( GoogleAnalyticsDataImportUploadOperator, GoogleAnalyticsDeletePreviousDataUploadsOperator, @@ -42,12 +45,17 @@ class TestGoogleAnalyticsListAccountsOperator: @mock.patch("airflow.providers.google.marketing_platform.operators.analytics.GoogleAnalyticsHook") def test_execute(self, hook_mock): - op = GoogleAnalyticsListAccountsOperator( - api_version=API_VERSION, - gcp_conn_id=GCP_CONN_ID, - task_id="test_task", - impersonation_chain=IMPERSONATION_CHAIN, - ) + with pytest.warns( + AirflowProviderDeprecationWarning, + match="The `GoogleAnalyticsListAccountsOperator` class is deprecated, please use " + "`GoogleAnalyticsAdminListAccountsOperator` instead.", + ): + op = GoogleAnalyticsListAccountsOperator( + api_version=API_VERSION, + gcp_conn_id=GCP_CONN_ID, + task_id="test_task", + impersonation_chain=IMPERSONATION_CHAIN, + ) op.execute(context=None) hook_mock.assert_called_once() hook_mock.return_value.list_accounts.assert_called_once() @@ -56,14 +64,19 @@ def test_execute(self, hook_mock): class TestGoogleAnalyticsRetrieveAdsLinksListOperator: @mock.patch("airflow.providers.google.marketing_platform.operators.analytics.GoogleAnalyticsHook") def test_execute(self, hook_mock): - op = GoogleAnalyticsRetrieveAdsLinksListOperator( - account_id=ACCOUNT_ID, - web_property_id=WEB_PROPERTY_ID, - api_version=API_VERSION, - gcp_conn_id=GCP_CONN_ID, - task_id="test_task", - impersonation_chain=IMPERSONATION_CHAIN, - ) + with pytest.warns( + AirflowProviderDeprecationWarning, + match="The `GoogleAnalyticsRetrieveAdsLinksListOperator` class is deprecated, please use " + "`GoogleAnalyticsAdminListGoogleAdsLinksOperator` instead.", + ): + op = GoogleAnalyticsRetrieveAdsLinksListOperator( + account_id=ACCOUNT_ID, + web_property_id=WEB_PROPERTY_ID, + api_version=API_VERSION, + gcp_conn_id=GCP_CONN_ID, + task_id="test_task", + impersonation_chain=IMPERSONATION_CHAIN, + ) op.execute(context=None) hook_mock.assert_called_once() hook_mock.return_value.list_ad_words_links.assert_called_once() @@ -80,15 +93,20 @@ def test_execute(self, hook_mock): class TestGoogleAnalyticsGetAdsLinkOperator: @mock.patch("airflow.providers.google.marketing_platform.operators.analytics.GoogleAnalyticsHook") def test_execute(self, hook_mock): - op = GoogleAnalyticsGetAdsLinkOperator( - account_id=ACCOUNT_ID, - web_property_id=WEB_PROPERTY_ID, - web_property_ad_words_link_id=WEB_PROPERTY_AD_WORDS_LINK_ID, - api_version=API_VERSION, - gcp_conn_id=GCP_CONN_ID, - task_id="test_task", - impersonation_chain=IMPERSONATION_CHAIN, - ) + with pytest.warns( + AirflowProviderDeprecationWarning, + match="The `GoogleAnalyticsGetAdsLinkOperator` class is deprecated, please use " + "`GoogleAnalyticsAdminGetGoogleAdsLinkOperator` instead.", + ): + op = GoogleAnalyticsGetAdsLinkOperator( + account_id=ACCOUNT_ID, + web_property_id=WEB_PROPERTY_ID, + web_property_ad_words_link_id=WEB_PROPERTY_AD_WORDS_LINK_ID, + api_version=API_VERSION, + gcp_conn_id=GCP_CONN_ID, + task_id="test_task", + impersonation_chain=IMPERSONATION_CHAIN, + ) op.execute(context=None) hook_mock.assert_called_once() hook_mock.return_value.get_ad_words_link.assert_called_once() @@ -112,17 +130,22 @@ def test_execute(self, mock_tempfile, gcs_hook_mock, ga_hook_mock): filename = "file/" mock_tempfile.return_value.__enter__.return_value.name = filename - op = GoogleAnalyticsDataImportUploadOperator( - account_id=ACCOUNT_ID, - web_property_id=WEB_PROPERTY_ID, - storage_bucket=BUCKET, - storage_name_object=BUCKET_OBJECT_NAME, - custom_data_source_id=DATA_SOURCE, - api_version=API_VERSION, - gcp_conn_id=GCP_CONN_ID, - task_id="test_task", - impersonation_chain=IMPERSONATION_CHAIN, - ) + with pytest.warns( + AirflowProviderDeprecationWarning, + match="The `GoogleAnalyticsDataImportUploadOperator` class is deprecated, " + "please use `GoogleAnalyticsAdminCreateDataStreamOperator` instead.", + ): + op = GoogleAnalyticsDataImportUploadOperator( + account_id=ACCOUNT_ID, + web_property_id=WEB_PROPERTY_ID, + storage_bucket=BUCKET, + storage_name_object=BUCKET_OBJECT_NAME, + custom_data_source_id=DATA_SOURCE, + api_version=API_VERSION, + gcp_conn_id=GCP_CONN_ID, + task_id="test_task", + impersonation_chain=IMPERSONATION_CHAIN, + ) op.execute(context=None) gcs_hook_mock.assert_called_once_with( @@ -154,15 +177,19 @@ def test_execute(self, mock_hook): {"id": 2}, {"id": 3}, ] - - op = GoogleAnalyticsDeletePreviousDataUploadsOperator( - account_id=ACCOUNT_ID, - web_property_id=WEB_PROPERTY_ID, - custom_data_source_id=DATA_SOURCE, - api_version=API_VERSION, - gcp_conn_id=GCP_CONN_ID, - task_id="test_task", - ) + with pytest.warns( + AirflowProviderDeprecationWarning, + match="The `GoogleAnalyticsDeletePreviousDataUploadsOperator` class is deprecated, please use " + "`GoogleAnalyticsAdminDeleteDataStreamOperator` instead.", + ): + op = GoogleAnalyticsDeletePreviousDataUploadsOperator( + account_id=ACCOUNT_ID, + web_property_id=WEB_PROPERTY_ID, + custom_data_source_id=DATA_SOURCE, + api_version=API_VERSION, + gcp_conn_id=GCP_CONN_ID, + task_id="test_task", + ) op.execute(context=None) mock_hook.assert_called_once_with( gcp_conn_id=GCP_CONN_ID,