"""Test payments_upload_approval task helpers.""" from unittest.mock import patch import pytest from tasks.payments_upload_approval import helpers @patch('tasks.payments_upload_approval.helpers.ows') def test_get_abacus_state_success(mock_ows, mock_payment_group_payment_states): """Test getting a specified abacus_state record for a payment_group_payment.""" action_name = 'upload_approval' mock_ows.get_abacus_states.return_value = mock_payment_group_payment_states res = helpers.get_abacus_state(action_name, 123) assert res mock_ows.get_abacus_states.assert_called_once_with('payment_group_payment', 123) @patch('tasks.payments_upload_approval.helpers.ows') def test_get_abacus_state_failure(mock_ows, mock_payment_group_payment_states): """Test getting a specified abacus_state record raises and error when not found.""" action_name = 'not_an_action' mock_ows.get_abacus_states.return_value = mock_payment_group_payment_states with pytest.raises(ValueError): helpers.get_abacus_state(action_name, 123) mock_ows.get_abacus_states.assert_called_once_with('payment_group_payment', 123) @patch('tasks.payments_upload_approval.helpers.build_archived_payment_upload_approval_file_name') # noqa E501 def test_build_upload_approval_archive_location( mock_build_archived_payment_upload_approval_file_name): """Test upload approval archive location is built.""" payment_name = 'payments ok' original_filename = 'originally.png' mock_build_archived_payment_upload_approval_file_name.return_value = 'turtles.pdf' result = helpers.build_upload_approval_archive_location( 22, payment_name, original_filename) assert result.url ==\ 's3://qa-abacus-payments/22-payments-ok/approval/archive/turtles.pdf' mock_build_archived_payment_upload_approval_file_name.assert_called_once_with( payment_name, original_filename) @patch('tasks.payments_upload_approval.helpers.build_upload_approval_path') def test_build_upload_approval_archive_path( mock_build_upload_approval_path ): """Test upload approval archive path is built.""" mock_build_upload_approval_path.return_value = 'approval_path' result = helpers.build_upload_approval_archive_path(22, 'name') assert result == 'approval_path/archive' mock_build_upload_approval_path.assert_called_once_with(22, 'name') def test_build_approval_path(): """Test upload approval path is built.""" result = helpers.build_upload_approval_path(22, 'pay me yesterday') assert result == '22-pay-me-yesterday/approval' @patch('tasks.payments_upload_approval.helpers.datetime') def test_build_archived_payment_upload_approval_file_name(mock_datetime): """Test archived payment upload approval file_name is built.""" mock_datetime.now.return_value = 'today' payment_name = 'work it work it' original_filename = 'concur.pdf' result = helpers.build_archived_payment_upload_approval_file_name( payment_name, original_filename) assert result == 'work-it-work-it-today-concur.pdf'