"""Test notification task.""" from unittest.mock import call from unittest.mock import patch import boto3 from garcon import activity from dim_refresh_etl.tasks import notification snowflake_db_config = { 'host': 'db-host', 'port': '1234', 'password': 'pass', 'user': 'use', 'db': 'db', 'schema': 'production'} @patch('dim_refresh_etl.tasks.notification.SnowflakeSQLExecutor') def test_record_refresh(mock_snowflake_executor): """Test record_refresh method.""" mock_snowflake_executor.return_value.__enter__.return_value.fetchone.\ return_value = [80] client = boto3.client('swf', 'us-east-1') result = notification.record_refresh( activity.Activity(client), snowflake_db_config, 'artist', 'timestamp', 'insert_sql', 'update_sql') # assert sql counts executed mock_snowflake_executor.assert_has_calls([ call().__enter__().fetchone('insert_sql'), call().__enter__().fetchone('update_sql')]) expected_message = ( 'artist dimension refresh complete for timestamp: timestamp\n' 'Existing dimensions updated: 80\n' 'New dimensions added: 80\n') sns_subject = 'Dimension Refresh Complete: artist' # assert sns message / subject return as expected assert expected_message == result['sns_message'] assert sns_subject == result['sns_subject']