"""Test the highlight logic.""" from unittest.mock import MagicMock from oto import response from marketing.logic import highlights from marketing.logic import entities def test_get_highlights(monkeypatch): """Test the method getting marketing highlights.""" monkeypatch.setattr( highlights.highlight, 'get_marketing_highlights', MagicMock(spec=highlights.highlight.get_marketing_highlights)) data = { 'entity_type': 'release', 'entity_id': 12345, 'client': 'oa', 'offset': 10, 'limit': 20, 'mkt_program_id': 54321 } highlights.get_highlights(**data) highlights.highlight.get_marketing_highlights.assert_called_with( data.pop('entity_type'), data.pop('entity_id'), **data) def test_create_highlight(monkeypatch): """Test creation of highlights.""" monkeypatch.setattr( highlights.highlight, 'create_marketing_highlight', MagicMock(spec=highlights.highlight.create_marketing_highlight)) monkeypatch.setattr( entities, 'verify_existence', MagicMock( spec=entities.verify_existence, return_value=response.Response())) data = {'entity': 'release', 'entity_id': 92827} highlights.create_highlight(data) highlights.highlight.create_marketing_highlight.assert_called_with(**data) entities.verify_existence.assert_called_with( data.get('entity'), data.get('entity_id')) def test_get_highlight(monkeypatch): """Test get an highlight by its id.""" expected_result = response.Response() monkeypatch.setattr( highlights.highlight, 'get_marketing_highlight_by_id', MagicMock( return_value=expected_result, spec=highlights.highlight.get_marketing_highlight_by_id)) highlight_id = 108474 result = highlights.get_highlight(108474) highlights.highlight.get_marketing_highlight_by_id.assert_called_with( highlight_id) assert result is expected_result def test_update_highlight(monkeypatch): """Test update an highlight by its id.""" expected_result = response.Response() monkeypatch.setattr( highlights.highlight, 'update_marketing_highlight', MagicMock( return_value=expected_result, spec=highlights.highlight.update_marketing_highlight)) highlight_id = 108474 data = {'entity_type': 'release', 'entity_id': 92827} result = highlights.update_highlight(108474, data) highlights.highlight.update_marketing_highlight.assert_called_with( highlight_id, **data) assert result is expected_result def test_delete_highlight(monkeypatch): """Test deleting an highlight by its id.""" expected_result = response.Response() monkeypatch.setattr( highlights.highlight, 'delete_marketing_highlight', MagicMock( return_value=expected_result, spec=highlights.highlight.delete_marketing_highlight)) highlight_id = 108474 result = highlights.delete_highlight(highlight_id) highlights.highlight.delete_marketing_highlight.assert_called_with( highlight_id) assert result is expected_result def test_is_owner_of_nonexistent_highlight(monkeypatch): """Test if an account owns an nonexistent highlight.""" expected_result = response.Response(status=404) get_highlight = MagicMock( return_value=expected_result, spec=highlights.get_highlight) monkeypatch.setattr(highlights, 'get_highlight', get_highlight) assert not highlights.is_owner(2, account_type='vendor', account_id=10983) def test_is_owner(monkeypatch): """Test if an account owns a specific highlight.""" entity = {'entity': 'release', 'entity_id': 309} get_highlight_response = response.Response(entity) get_highlight = MagicMock( return_value=get_highlight_response, spec=highlights.get_highlight) monkeypatch.setattr(highlights, 'get_highlight', get_highlight) is_owner_response = response.Response() is_owner = MagicMock( return_value=is_owner_response, spec=entities.is_owner) monkeypatch.setattr(entities, 'is_owner', is_owner) result = highlights.is_owner(2, account_type='vendor', account_id=10983) assert result is is_owner_response def test_delete_highlights_by_entity(monkeypatch): """Test deleting an highlight by entity type and entity id.""" expected_result = response.Response() monkeypatch.setattr( highlights.highlight, 'delete_highlight_by_entity', MagicMock( return_value=expected_result, spec=highlights.highlight.delete_marketing_highlight)) entity_type = 'release' entity_id = '123' result = highlights.delete_highlights_by_entity(entity_type, entity_id) highlights.highlight.delete_highlight_by_entity.assert_called_with( entity_type, entity_id) assert result is expected_result