"""Tests for users logic.""" import pytest import const # noqa import index # noqa from logic import users from models import ows_users def test_prepare_docs_subaccount_add( mocker, user_document_fixture, user_cloudsearch_document_for_subaccount, converted_subaccount_event_fixture): """Test prepare user cloudsearch document when subaccount.""" mocker.patch.object( ows_users, 'get_user_document', return_value=user_document_fixture) doc = users.prepare_docs(converted_subaccount_event_fixture) assert doc == user_cloudsearch_document_for_subaccount def test_prepare_docs_vend_contact_add( mocker, user_document_fixture, user_cloudsearch_document, converted_vend_contact_event_fixture): """Test prepare user cloudsearch document when vend_contact.""" document = user_document_fixture document.pop() mocker.patch.object( ows_users, 'get_user_document', return_value=document) doc = users.prepare_docs(converted_vend_contact_event_fixture) assert doc == user_cloudsearch_document def test_prepare_docs_contact_add( mocker, user_document_fixture, user_cloudsearch_document, converted_contact_event_fixture): """Test prepare user cloudsearch document when contact.""" document = user_document_fixture document.pop() mocker.patch.object( ows_users, 'get_user_document', return_value=document) doc = users.prepare_docs(converted_contact_event_fixture) assert doc == user_cloudsearch_document def test_prepare_docs_role_add( mocker, user_document_fixture, user_cloudsearch_document, converted_role_event_fixture): """Test prepare user cloudsearch document when vend_contact_roles.""" document = user_document_fixture document.pop() mocker.patch.object( ows_users, 'get_user_document', return_value=document) doc = users.prepare_docs(converted_role_event_fixture) assert doc == user_cloudsearch_document def test_prepare_docs_vend_contact_delete( user_cloudsearch_document, converted_vend_contact_event_fixture): """Test prepare cloudsearch document for deletion.""" delete_event = converted_vend_contact_event_fixture.copy() delete_doc = user_cloudsearch_document[0].copy() delete_event['type'] = 'delete' delete_doc['type'] = 'delete' delete_doc.pop('fields') doc = users.prepare_docs(delete_event) assert doc == [delete_doc] def test_prepare_docs_incompatible( mocker, converted_vend_contact_event_fixture): """Test prepare cloudsearch document with incompatible format.""" delete_event = converted_vend_contact_event_fixture.copy() del delete_event['type'] doc = users.prepare_docs(delete_event) assert doc == [] @pytest.mark.parametrize( 'mock_object,mock_method,exception_message', [ (ows_users, 'get_user_document', const.OWS_USERS_ERROR.format('user_id')) ] ) def test_prepare_docs_user_error( mocker, converted_vend_contact_event_fixture, mock_object, mock_method, exception_message): """Test prepare cloudsearch document ows-users error.""" mocker.patch.object( mock_object, mock_method, side_effect=Exception(exception_message)) with pytest.raises(Exception, match=exception_message): users.prepare_docs(converted_vend_contact_event_fixture)