"""Tests ows_collaborators connectors.""" from unittest.mock import patch from royalties.connectors.ows_collaborators import close_bulk_dp_collaborator_statements @patch('owsrequest.flask_request.get_ows_headers') @patch('owsrequest.request.put') def test_close_bulk_dp_collaborator_statements(mock_put, mock_get_ows_headers): """Test closing all DP collaborator statements in bulk.""" period_name = '2023-10' new_abacus_statement_period_id = 123 headers = mock_get_ows_headers.return_value close_bulk_dp_collaborator_statements(period_name, new_abacus_statement_period_id) mock_put.assert_called_once_with( 'ows-collaborator', '/statement-period/bulk-close', headers=headers, json={ 'period_name': period_name, 'direct_payments_enabled': True, 'new_abacus_statement_period_id': new_abacus_statement_period_id, }, ) @patch('owsrequest.flask_request.get_ows_headers') @patch('owsrequest.request.put') def test_close_bulk_dp_collaborator_statements_error_status( mock_put, mock_get_ows_headers ): """Test non-204 status when closing all DP collaborator statements in bulk.""" period_name = '2023-10' new_abacus_statement_period_id = 123 headers = mock_get_ows_headers.return_value mock_response = mock_put.return_value mock_response.status_code = 400 mock_response.text = 'Bad Request' with patch( 'royalties.connectors.ows_collaborators.send_to_sentry' ) as mock_send_to_sentry: close_bulk_dp_collaborator_statements( period_name, new_abacus_statement_period_id ) mock_send_to_sentry.assert_called_once_with( message='Error closing bulk DP collaborator statements', errors='Bad Request', status=400, sentry_message=( 'Error closing bulk DP collaborator statements: 400 - Bad Request' ), ) mock_put.assert_called_once_with( 'ows-collaborator', '/statement-period/bulk-close', headers=headers, json={ 'period_name': period_name, 'direct_payments_enabled': True, 'new_abacus_statement_period_id': new_abacus_statement_period_id, }, ) @patch('owsrequest.flask_request.get_ows_headers') @patch('owsrequest.request.put') @patch('royalties.connectors.ows_collaborators.send_to_sentry') def test_close_bulk_dp_collaborator_statements_error( mock_send_to_sentry, mock_request, mock_get_ows_headers ): """Test error handling when closing all DP collaborator statements in bulk.""" period_name = '2023-10' new_abacus_statement_period_id = 123 headers = mock_get_ows_headers.return_value mock_request.side_effect = Exception('Test exception') close_bulk_dp_collaborator_statements(period_name, new_abacus_statement_period_id) mock_send_to_sentry.assert_called_once_with( message='Error closing bulk DP collaborator statements', errors='Test exception', status=500, sentry_message='Error closing bulk DP collaborator statements: Test exception', ) mock_request.assert_called_once_with( 'ows-collaborator', '/statement-period/bulk-close', headers=headers, json={ 'period_name': period_name, 'direct_payments_enabled': True, 'new_abacus_statement_period_id': new_abacus_statement_period_id, }, )