"""Test worksheet_payment_contract_advance related states.""" from abacus_common_logic.utils import dates from abacus_state.constants.constants import ( ACTION_STATUSES, PARENT_TABLE_NAMES, WORKSHEET_PAYMENT_CONTRACT_ADVANCE_ACTION_NAMES as ACTION_NAMES, ) from abacus_state.constants.error import ERROR_PREVIOUS_ACTIONS_STATUS from abacus_state.logic.worksheet_payment_contract_advance_state import ORDERED_ACTIONS from tests.utils.factories import AbacusStateFactory def test_update_worksheet_payment_contract_advance_state(fixture_client): """Test update_worksheet_payment_contract_advance.""" states = [] for action_name in ORDERED_ACTIONS: states.append( AbacusStateFactory.create( action_name=action_name, parent_table_name=PARENT_TABLE_NAMES.WORKSHEET_PAYMENT_CONTRACT_ADVANCE, parent_table_id=1, action_status='init', ) ) update_payload = {'action_status': 'complete'} salesforce_state_id = ACTION_NAMES.index(ACTION_NAMES.SALESFORCE_ID_LINKED) + 1 res = fixture_client.put( f'/abacus-state/{salesforce_state_id}', json=update_payload ) salesforce_linked_state = states[salesforce_state_id - 1] assert res.status_code == 200 assert res.json == { 'action_name': ACTION_NAMES.SALESFORCE_ID_LINKED, 'action_status': ACTION_STATUSES.COMPLETE, 'abacus_state_id': 1, 'message': None, 'parent_table_name': PARENT_TABLE_NAMES.WORKSHEET_PAYMENT_CONTRACT_ADVANCE, 'parent_table_id': 1, 'created_at': dates.safe_format_datetime(salesforce_linked_state.created_at), 'created_by': salesforce_linked_state.created_by, 'last_modified': dates.safe_format_datetime( salesforce_linked_state.last_modified ), 'last_modified_by': salesforce_linked_state.last_modified_by, } update_payload = {'action_status': 'complete'} res = fixture_client.put( f'/abacus-state/{ORDERED_ACTIONS.index(ACTION_NAMES.SEND_PAYMENTS) + 1}', json=update_payload, ) assert res.status_code == 400 assert res.json == { 'code': 'error', 'message': ERROR_PREVIOUS_ACTIONS_STATUS.format('send_payments'), }