"""Tests for project logic.""" import pytest from logic import project from models import ows_project_manager import const # noqa import index # noqa def test_prepare_doc_project_add( mocker, project_document_fixture, project_cloudsearch_document, converted_project_event_fixture): """Test prepare cloudsearch document.""" mocker.patch.object( ows_project_manager, 'get_project_document', return_value=project_document_fixture) doc = project.prepare_doc(converted_project_event_fixture) assert doc == project_cloudsearch_document def test_prepare_doc_project_delete( project_cloudsearch_document, converted_project_event_fixture): """Test prepare cloudsearch document for deletion.""" delete_event = converted_project_event_fixture.copy() delete_doc = project_cloudsearch_document.copy() delete_event['type'] = 'delete' delete_doc['type'] = 'delete' delete_doc.pop('fields') doc = project.prepare_doc(delete_event) assert doc == delete_doc def test_prepare_doc_project_incompatible( mocker, converted_project_event_fixture): """Test prepare cloudsearch document with incompatible format.""" delete_event = converted_project_event_fixture.copy() del delete_event['type'] doc = project.prepare_doc(delete_event) assert doc == {} @pytest.mark.parametrize( 'mock_object,mock_method,exception_message', [ (ows_project_manager, 'get_project_document', const.OWS_PROJECT_ERROR) ] ) def test_prepare_doc_project_error( mocker, converted_project_event_fixture, mock_object, mock_method, exception_message): """Test prepare cloudsearch document ows-product error.""" mocker.patch.object( mock_object, mock_method, side_effect=Exception(exception_message)) with pytest.raises(Exception, match=exception_message): project.prepare_doc(converted_project_event_fixture) # def test_prepare_doc_project_exclusion( # mocker, # project_document_fixture, # converted_project_event_fixture, # converted_project_delete_row_fixture, # project_id): # """Test prepare cloudsearch document on project exclusion list.""" # mocker.patch.object( # ows_project_manager, # 'get_project_document', # return_value=project_document_fixture) # event = converted_project_event_fixture.copy() # event['data']['project_id'] = project_id # doc = project.prepare_doc(event) # delete_doc = converted_project_delete_row_fixture # assert doc == delete_doc