"""Tests for ows_abacus_account.""" from unittest.mock import MagicMock from unittest.mock import patch from json_contract_file_import.entity_import_result import EntityImportResult from json_contract_file_import.payment_term_update import ORCHARD_US_PAYMENT_ENTITY_ID from json_contract_file_import.payment_term_update import update_payment_term from tests.unit.utils import assert_import_result @patch('json_contract_file_import.payment_term_update.update_account_payment_term') def test_update_payment_term( mock_update_account_payment_term, mock_json_contract_file_parsed ): """Test successful update of account payment term.""" mock_response = MagicMock() mock_response.status_code = 200 mock_response.text = """{ 'account_id': 39, 'currency_code': 'EUR', 'payment_entity_id': 1, 'payment_minimum': '250.00', 'payment_schedule': '60_days_after_month_end', 'agreement_type_id': None, 'account_payment_term_id': 3 }""" mock_update_account_payment_term.return_value = mock_response response = update_payment_term(3, mock_json_contract_file_parsed) mock_update_account_payment_term.assert_called_once_with(3, { 'payment_minimum': 250, 'payment_schedule': '90_days_after_month_end', 'payment_entity_id': ORCHARD_US_PAYMENT_ENTITY_ID, }) expected_account_import_result = EntityImportResult( EntityImportResult.ACCOUNT_PAYMENT_TERM, 3, True, additional_info=mock_response.text ) assert_import_result(response, expected_account_import_result) @patch('json_contract_file_import.payment_term_update.update_account_payment_term') def test_update_payment_term_with_paid_by( mock_update_account_payment_term, mock_json_contract_file_parsed_with_paid_by ): """Test successful update of account payment term with custom paid_by.""" mock_response = MagicMock() mock_response.status_code = 200 mock_response.text = """{ 'account_id': 39, 'currency_code': 'EUR', 'payment_entity_id': 6, 'payment_minimum': '250.00', 'payment_schedule': '60_days_after_month_end', 'agreement_type_id': None, 'account_payment_term_id': 3 }""" mock_update_account_payment_term.return_value = mock_response response = update_payment_term( 3, mock_json_contract_file_parsed_with_paid_by ) mock_update_account_payment_term.assert_called_once_with(3, { 'payment_minimum': 250, 'payment_schedule': '90_days_after_month_end', 'payment_entity_id': 6, }) expected_account_import_result = EntityImportResult( EntityImportResult.ACCOUNT_PAYMENT_TERM, 3, True, additional_info=mock_response.text ) assert_import_result(response, expected_account_import_result) @patch('json_contract_file_import.payment_term_update.update_account_payment_term') def test_update_payment_term_failed( mock_update_account_payment_term, mock_json_contract_file_parsed ): """Test update payment term failed.""" mock_response = MagicMock() mock_response.status_code = 400 mock_response.text = """{ "code": "error", "message": "Payment term cannot by updated." }""" mock_update_account_payment_term.return_value = mock_response response = update_payment_term(3, mock_json_contract_file_parsed) expected_import_result = EntityImportResult( EntityImportResult.ACCOUNT_PAYMENT_TERM, 3, False, '400 ' + mock_response.text ) assert_import_result(response, expected_import_result)