"""Tests for Theatrical ETL util module.""" from datetime import date import json from unittest.mock import Mock from unittest.mock import patch from flows.theatrical import utils def test_serialize_date(): """Test of utils.serialize_date function.""" assert utils.serialize_date(date(2016, 3, 2)) == '2016-03-02' def test_deserialize_date(): """Test of utils.deserialize_date function.""" assert utils.deserialize_date('2016-03-02') == date(2016, 3, 2) @patch('flows.theatrical.utils.boto3') @patch('flows.theatrical.utils.config') def test_send_success_notification(config, boto): """Test sending success notification.""" config.SNS_ACTION_SUCCESS = 'test passed' config.SNS_SOURCE = 'py.test' config.SNS_TOPIC_ARN = 'a unit test' sns = Mock() sns.publish.return_value = {'foo': 'bar'} boto.client.return_value = sns correlation_id = '0123-4567-8910-1112' upcs = ['123', '456'] result = utils.send_success_notification(correlation_id, upcs) assert result == {'foo': 'bar'} expected_payload = { 'action': config.SNS_ACTION_SUCCESS, 'correlation_id': correlation_id, 'source': config.SNS_SOURCE, 'upcs': upcs} params = sns.publish.call_args_list[0][1] assert params['TopicArn'] == config.SNS_TOPIC_ARN assert params['Subject'] == config.SNS_ACTION_SUCCESS assert json.loads(params['Message']) == expected_payload