"""Tests for subaccount logic.""" import pytest import const # noqa import index # noqa from logic import subaccount from models import ows_account def test_prepare_doc_subaccount_add( mocker, subaccount_document_fixture, subaccount_cloudsearch_document, converted_subaccount_event_fixture): """Test prepare cloudsearch document.""" mocker.patch.object( ows_account, 'get_account_document', return_value=subaccount_document_fixture) doc = subaccount.prepare_doc(converted_subaccount_event_fixture) assert doc == subaccount_cloudsearch_document def test_prepare_doc_subaccount_delete( subaccount_cloudsearch_document, converted_subaccount_event_fixture): """Test prepare cloudsearch document for deletion.""" delete_event = converted_subaccount_event_fixture.copy() delete_doc = subaccount_cloudsearch_document.copy() delete_event['type'] = 'delete' delete_doc['type'] = 'delete' delete_doc.pop('fields') doc = subaccount.prepare_doc(delete_event) assert doc == delete_doc def test_prepare_doc_subaccount_incompatible( mocker, converted_subaccount_event_fixture): """Test prepare cloudsearch document with incompatible format.""" delete_event = converted_subaccount_event_fixture.copy() del delete_event['type'] doc = subaccount.prepare_doc(delete_event) assert doc == {} @pytest.mark.parametrize( 'mock_object,mock_method,exception_message', [ (ows_account, 'get_account_document', const.OWS_ACCOUNT_ERROR.format('subaccount')) ] ) def test_prepare_doc_subaccount_error( mocker, converted_subaccount_event_fixture, mock_object, mock_method, exception_message): """Test prepare cloudsearch document ows-account error.""" mocker.patch.object( mock_object, mock_method, side_effect=Exception(exception_message)) with pytest.raises(Exception, match=exception_message): subaccount.prepare_doc(converted_subaccount_event_fixture)