"""Test suite for vendor_agreement logic.""" import pytest from collaborator.logic import vendor_agreement from collaborator.models.rds import vendor_agreement_persister from collaborator.utils import logging from collaborator.utils.error import OwsError def test_create_vendor_agreement(mocker, mock_account, mock_user): """Test create vendor agreement.""" mock_agreement = { "id": 2, "user_id": str(mock_user.id), "vendor_id": mock_account.id, "date_accepted": "2020-04-01T12:34:56Z", } mock_result = (mock_agreement, True) mock_create_vendor_agreement = mocker.patch.object( vendor_agreement_persister.VendorAgreementPersister, "create_vendor_agreement" ) mock_create_vendor_agreement.return_value = mock_result mock_log_event = mocker.patch.object(vendor_agreement.logging, "log_event") result = vendor_agreement.create_vendor_agreement(mock_account, mock_user) mock_create_vendor_agreement.assert_called_with(mock_account, mock_user) mock_log_event.assert_called_with( logging.LOG_EVENT_CREATE, "vendor_agreement", mock_agreement["id"], None, mock_agreement, mock_user, ) assert result == mock_agreement def test_get_vendor_agreement(mocker, mock_account, mock_user): """Test getting a vendor agreement.""" mock_result = { "id": 2, "user_id": str(mock_user.id), "vendor_id": mock_account.id, "date_accepted": "2020-04-01T12:34:56Z", } mock_get_vendor_agreement = mocker.patch.object( vendor_agreement_persister.VendorAgreementPersister, "get_vendor_agreement_for_account", ) mock_get_vendor_agreement.return_value = mock_result result = vendor_agreement.get_vendor_agreement(mock_account) mock_get_vendor_agreement.assert_called_with(mock_account) assert result == mock_result def test_get_vendor_agreement_not_found(mocker, mock_account): """Test getting a vendor agreement.""" mock_get_vendor_agreement = mocker.patch.object( vendor_agreement_persister.VendorAgreementPersister, "get_vendor_agreement_for_account", ) mock_get_vendor_agreement.return_value = None with pytest.raises(OwsError) as exc_info: vendor_agreement.get_vendor_agreement(mock_account) mock_get_vendor_agreement.assert_called_with(mock_account) assert exc_info.value.status == 404 assert exc_info.value.message == ( f"Vendor agreement for Account ID: {mock_account.id} not found" )