"""Tests for terms and conditions handlers.""" from unittest.mock import patch from collaborator.utils.typing import Account from tests.testutils import mock_auth @patch("collaborator.logic.terms_and_conditions.get_terms_and_conditions") @patch("collaborator.models.ows.ows_account.has_direct_payments") def test_get_terms_and_conditions( mock_has_direct_payments, mock_get_terms_and_conditions, mock_account, auth_client, mocker, ): """Test getting terms and conditions.""" mock_auth(mocker, mock_account.id) mock_has_direct_payments.return_value = True mock_get_terms_and_conditions.return_value = {"status": "success"} result = auth_client.get( "/terms-and-conditions", query_string={"vendor_id": mock_account.id} ) assert result.status_code == 200 mock_get_terms_and_conditions.assert_called_with( Account(type=mock_account.type, id=str(mock_account.id)) ) @patch("collaborator.logic.terms_and_conditions.agree_terms_and_conditions") @patch("collaborator.models.ows.ows_users.get_identity_metadata") @patch("collaborator.models.ows.ows_account.has_direct_payments") @patch("collaborator.utils.helpers.check_vendors_authorization") def test_agree_terms_and_conditions( mock_check_vendors_authorization, mock_has_direct_payments, mock_get_identity_metadata, mock_agree_terms_and_conditions, mock_account, auth_client, mocker, ): """Test agreeing terms and conditions.""" mock_auth(mocker, mock_account.id) mock_get_identity_metadata.return_value = {} mock_has_direct_payments.return_value = True mock_check_vendors_authorization.return_value = [1, 2, 3, 4] mock_agree_terms_and_conditions.return_value = {"status": "success"} result = auth_client.post( "/terms-and-conditions/agreement", json={"vendor_id": mock_account.id, "terms_and_conditions_id": 1}, ) assert result.status_code == 200 mock_agree_terms_and_conditions.assert_called_with( {}, mock_account.id, 1, )