"""Tests for marketing program info logic.""" from unittest.mock import MagicMock, patch from sales_goals.logic import marketing_program_info @patch( 'sales_goals.logic.marketing_program_info.get_marketing_program_info', return_value=MagicMock(name='get_marketing_program_info')) @patch( 'sales_goals.logic.marketing_program_info.create_marketing_program_info', return_value=MagicMock(name='create_marketing_program_info')) @patch( 'sales_goals.logic.marketing_program_info.marketing_drivers', return_value=MagicMock(name='marketing_drivers')) def test_upsert_marketing_program_info(mock_marketing_drivers, mock_create_program, mock_get_program): """Test upsert_marketing_program_info.""" entity_type = 'product' entity_id = 123 entity_data = {'info_for': 'release', 'info_for_id': entity_id} payload = [ { 'description': 'create text', 'subject': 'create', 'client': 'oa', 'mkt_program_id': 15, }, { 'mkt_program_info_id': 1, 'description': 'update text', 'subject': 'update', 'client': 'oa', 'mkt_program_id': 9, }, ] mock_get_program.return_value = [payload[1], { 'mkt_program_info_id': 2, 'description': 'delete text', 'subject': 'delete', 'client': 'oa', 'mkt_program_id': 9, }] mock_create_program.return_value = [payload[0]] mock_marketing_drivers.update_marketing_program_info.return_value = payload[1] result = marketing_program_info.upsert_marketing_program_info(entity_type, entity_id, payload) mock_get_program.assert_called_with(entity_type, entity_id) mock_marketing_drivers.delete_marketing_program_infos.assert_called_with({2}) mock_create_program.assert_called_with([{ **payload[0], **entity_data }]) mock_marketing_drivers.update_marketing_program_info.assert_called_with(1, { **payload[1], **entity_data }) assert result == payload