"""Unit testcases for EarningsTransfer handlers.""" from unittest.mock import patch from owsresponse import response from royalties.schemas.earnings_transfer import EarningsTransferDetailSchema from royalties.tests.utils.factories import EarningsTransferFactory @patch('royalties.blueprints.earnings_transfer.logic') def test_get_earnings_transfer(mock_logic, fixture_client): """Test to get a list of earnings transfer.""" mock_earnings_transfer = EarningsTransferFactory.create() mock_response = { 'items': EarningsTransferDetailSchema(many=True).dump([mock_earnings_transfer]), 'total_count': 1, } mock_logic.get_earnings_transfers.return_value = response.Response( message=mock_response, status=200 ) result = fixture_client.get('/earnings-transfers') assert result.status_code == 200 assert result.json == mock_response @patch('royalties.blueprints.earnings_transfer.logic') def test_get_earnings_transfers_by_contract_id(mock_logic, fixture_client): """Test to get a list of earnings transfer for specified contract_id.""" mock_earnings_transfer = EarningsTransferFactory.create() mock_response = { 'items': EarningsTransferDetailSchema(many=True).dump([mock_earnings_transfer]), 'total_count': 1, } mock_logic.get_earnings_transfers_by_contract_id.return_value = response.Response( message=mock_response, status=200 ) contract_id = mock_earnings_transfer.from_contract_id result = fixture_client.get(f'/contract/{contract_id}/earnings-transfers') assert result.status_code == 200 assert result.json == mock_response @patch('royalties.blueprints.earnings_transfer.logic') def test_get_contract_earnings_transfers_by_transfer_type(mock_logic, fixture_client): """Test to get a list of earnings transfer for specified contract_id and transfer_type.""" mock_earnings_transfer = EarningsTransferFactory.create() mock_response = { 'items': EarningsTransferDetailSchema(many=True).dump([mock_earnings_transfer]), 'total_count': 1, } mock_logic.get_earnings_transfers_by_contract_id.return_value = response.Response( message=mock_response, status=200 ) contract_id = mock_earnings_transfer.from_contract_id result = fixture_client.get(f'/contract/{contract_id}/earnings-transfers/transfer') assert result.status_code == 200 assert result.json == mock_response @patch('royalties.blueprints.earnings_transfer.logic') def test_get_earnings_transfer_by_id(mock_logic, fixture_client): """Test getting an earnings transfer by ID.""" mock_earnings_transfer = EarningsTransferFactory.create() mock_response = EarningsTransferDetailSchema().dump(mock_earnings_transfer) mock_logic.get_earnings_transfer_by_id.return_value = response.Response( message=mock_response, status=200 ) transfer_id = mock_earnings_transfer.earnings_transfer_id result = fixture_client.get(f'/earnings-transfer/{transfer_id}') assert result.status_code == 200 assert result.json == mock_response @patch('royalties.blueprints.earnings_transfer.logic') def test_bulk_create_earnings_transfers(mock_logic, fixture_client): """Test to earnings_transfers in bulk.""" mock_input = [ { 'from_contract_id': 1, 'to_contract_id': 2, 'transfer_type': 'override', 'rate_type': 'percent', 'transfer_amount': '1', 'input': 'gross_revenue', 'negative': True, 'active': True, 'comment': 'Test comment', } ] mock_earnings_transfers = [EarningsTransferFactory.create()] mock_response = EarningsTransferDetailSchema(many=True).dump( mock_earnings_transfers ) mock_logic.bulk_create_earnings_transfers.return_value = response.Response( message=mock_response, status=201 ) result = fixture_client.post('/earnings-transfer/bulk', json=mock_input) assert result.status_code == 201 assert result.json == mock_response