"""Unit tests for GFK Snowflake SQL executor.""" from unittest.mock import MagicMock from unittest.mock import patch import pytest from snowflake import connector from feed_ingestion.flows.gfk.snowflake_executor import GFK from tests.conftest import SubstringMatcher @pytest.fixture def mock_executor(sf_config_mock, monkeypatch): """Yield executor context.""" connect_mock = MagicMock() monkeypatch.setattr(connector, 'connect', connect_mock) executor = GFK(sf_config_mock) with patch.object(executor, 'execute', wraps=executor.execute) as \ executor.ex_mock: yield executor def test_load_staging_fact_table(mock_executor): """Test load_staging_fact_table method.""" mock_executor.load_staging_fact_table('2017-01-01') assert mock_executor.ex_mock.call_count == 1 mock_executor.ex_mock.assert_any_call( SubstringMatcher( containing=[ 'test_db.test_schema.staging_fact_point_of_sale_' 'gfk_20170101', 'test_db.test_schema.staging_raw_gfk']), params={'date': '2017-01-01', 'providerid': 1}) def test_delete_from_fact_table(mock_executor): """Test delete_from_fact_table method.""" mock_executor.delete_from_fact_table('2017-01-01') assert mock_executor.ex_mock.call_count == 1 mock_executor.ex_mock.assert_any_call( SubstringMatcher( containing=['test_db.test_schema.fact_point_of_sale']), params={'date': '2017-01-01', 'providerid': 1}) def test_delete_from_fact_error_table(mock_executor): """Test delete_from_fact_error_table method.""" mock_executor.delete_from_fact_error_table('2017-01-01') assert mock_executor.ex_mock.call_count == 1 mock_executor.ex_mock.assert_any_call( SubstringMatcher( containing=['test_db.test_schema.fact_point_of_sale_error']), params={'date': '2017-01-01', 'providerid': 1}) def test_load_fact_error_data(mock_executor): """Test load_fact_error_data method.""" mock_executor.load_fact_error_data('2017-01-01') assert mock_executor.ex_mock.call_count == 1 mock_executor.ex_mock.assert_any_call( SubstringMatcher( containing=[ 'test_db.test_schema.staging_fact_point_of_sale_' 'gfk_20170101', 'test_db.test_schema.staging_raw_gfk', 'test_db.test_schema.fact_point_of_sale_error']), params={'date': '2017-01-01', 'providerid': 1})