"""Tests for ows-royalties related requests.""" from unittest.mock import patch import httpx from owsclient.test import OwsClientMock import config from sync_contract.ows_royalties import ( SERVICE, create_abacus_legacy_contract, get_contract_details, get_contract_exclusions, get_contract_lifecycle, get_contract_term_conditions, get_contract_terms, get_contracts, ) @patch('sync_contract.ows_royalties.app_logger') @patch('sync_contract.ows_royalties.raise_service_error') def test_create_abacus_legacy_contract( mock_raise_service_error, mock_logger, mock_abacus_legacy_contract_response, ows_client_mock: OwsClientMock, ): """Test to successfully create abacus legacy contract.""" contract_id = 1 request_url = f'/contract/{contract_id}/legacy-contract/' ows_client_mock.post(SERVICE, request_url).mock( return_value=httpx.Response(201, json=mock_abacus_legacy_contract_response) ) mock_legacy_contract_body = {'oa_contract_id': 1234} result = create_abacus_legacy_contract(contract_id, mock_legacy_contract_body) assert result == mock_abacus_legacy_contract_response mock_logger.info.assert_called_once_with( config.MESSAGE_CREATION_STARTED.format('Abacus Legacy Contract') ) mock_raise_service_error.assert_not_called() @patch('sync_contract.ows_royalties.app_logger') @patch('sync_contract.ows_royalties.raise_service_error') def test_get_contracts( mock_raise_service_error, mock_logger, mock_contract_details, mock_account_contracts, ows_client_mock: OwsClientMock, ): """Test to successfully get contract details.""" account_id = mock_contract_details['account_id'] request_url = '/contracts/' ows_client_mock.get(SERVICE, request_url).mock( return_value=httpx.Response(200, json=mock_account_contracts) ) result = get_contracts(account_id) assert result == mock_account_contracts['items'] mock_logger.info.assert_called_once_with( config.MESSAGE_GET_CONTRACTS.format(account_id) ) mock_raise_service_error.assert_not_called() @patch('sync_contract.ows_royalties.app_logger') @patch('sync_contract.ows_royalties.raise_service_error') def test_get_contract_details( mock_raise_service_error, mock_logger, mock_contract_details, ows_client_mock: OwsClientMock, ): """Test to successfully get contract details.""" contract_id = mock_contract_details['contract_id'] request_url = f'/contract/{contract_id}/' ows_client_mock.get(SERVICE, request_url).mock( return_value=httpx.Response(200, json=mock_contract_details) ) result = get_contract_details(contract_id) assert result == mock_contract_details mock_logger.info.assert_called_once_with( config.MESSAGE_GET_CONTRACT_DETAILS.format(contract_id) ) mock_raise_service_error.assert_not_called() @patch('sync_contract.ows_royalties.app_logger') @patch('sync_contract.ows_royalties.raise_service_error') def test_get_contract_exclusions( mock_raise_service_error, mock_logger, mock_contract_exclusions, ows_client_mock: OwsClientMock, ): """Test to successfully get contract exclusions.""" contract_id = mock_contract_exclusions['contract_id'] request_url = f'/contract/{contract_id}/exclusions/' ows_client_mock.get(SERVICE, request_url).mock( return_value=httpx.Response(200, json=mock_contract_exclusions) ) result = get_contract_exclusions(contract_id) assert result == mock_contract_exclusions mock_logger.info.assert_called_once_with( config.MESSAGE_GET_CONTRACT_EXCLUSIONS.format(contract_id) ) mock_raise_service_error.assert_not_called() @patch('sync_contract.ows_royalties.app_logger') @patch('sync_contract.ows_royalties.raise_service_error') def test_get_contract_lifecycle_success( mock_raise_service_error, mock_logger, mock_contract_lifecycle, ows_client_mock: OwsClientMock, ): """Test successfully getting contract_lifecycle by contract_id.""" contract_id = mock_contract_lifecycle['contract_id'] ows_client_mock.get(SERVICE, f'/contract/{contract_id}/contract-lifecycle/').mock( return_value=httpx.Response(200, json=mock_contract_lifecycle) ) result = get_contract_lifecycle(contract_id) assert result == mock_contract_lifecycle mock_logger.info.assert_called_once_with( config.MESSAGE_GET_CONTRACT_LIFECYCLE.format(contract_id) ) mock_raise_service_error.assert_not_called() @patch('sync_contract.ows_royalties.app_logger') @patch('sync_contract.ows_royalties.raise_service_error') def test_get_contract_lifecycle_error( mock_raise_service_error, mock_logger, ows_client_mock: OwsClientMock ): """Test failure getting contract_lifecycle by contract_id.""" contract_id = 123 request_url = f'/contract/{contract_id}/contract-lifecycle/' ows_client_mock.get(SERVICE, request_url).mock( return_value=httpx.Response(400, json='say please') ) result = get_contract_lifecycle(contract_id) assert not result mock_logger.info.assert_called_once_with( config.MESSAGE_GET_CONTRACT_LIFECYCLE.format(contract_id) ) mock_raise_service_error.assert_called_once() @patch('sync_contract.ows_royalties.app_logger') @patch('sync_contract.ows_royalties.raise_service_error') def test_get_contract_terms( mock_raise_service_error, mock_logger, mock_contract_terms, ows_client_mock: OwsClientMock, ): """Test to successfully get contract terms.""" contract_id = 1 request_url = f'/contracts/{contract_id}/contract-terms/' ows_client_mock.get(SERVICE, request_url).mock( return_value=httpx.Response(200, json=mock_contract_terms) ) result = get_contract_terms(contract_id) assert result == mock_contract_terms mock_logger.info.assert_called_once_with( config.MESSAGE_GET_CONTRACT_TERMS.format(contract_id) ) mock_raise_service_error.assert_not_called() @patch('sync_contract.ows_royalties.app_logger') @patch('sync_contract.ows_royalties.raise_service_error') def test_get_contract_term_conditions( mock_raise_service_error, mock_logger, mock_contract_term_conditions, ows_client_mock: OwsClientMock, ): """Test to successfully get contract term conditions.""" contract_term_id = 1 request_url = f'/contract-term/{contract_term_id}/conditions/' ows_client_mock.get(SERVICE, request_url).mock( return_value=httpx.Response(200, json=mock_contract_term_conditions) ) result = get_contract_term_conditions(contract_term_id) assert result == mock_contract_term_conditions mock_logger.info.assert_called_once_with( config.MESSAGE_GET_CONTRACT_TERMS_CONDITIONS.format(contract_term_id) ) mock_raise_service_error.assert_not_called()