"""Functional tests for contract_party API.""" from abacus_contract.constants.constants import CONTRACT_PARTY_TARGET_TYPES from tests.utils.factories import ContractFactory from tests.utils.factories import ContractPartyFactory def test_create_contract_party(fixture_client): """Test to create a contract_party.""" mock_contract = ContractFactory.create() contract_id = mock_contract.contract_id target_id = '1ec7c1bf-2318-4052-9406-a3e35a620bd3' target_type = CONTRACT_PARTY_TARGET_TYPES.CONTRIBUTOR mock_post_data = { 'contract_id': contract_id, 'target_id': target_id, 'target_type': target_type } res = fixture_client.post('/contract-party', json=mock_post_data) assert res.status_code == 201 assert res.json == { 'contract_party_id': 1, 'contract_id': contract_id, 'target_id': target_id, 'target_type': target_type } def test_get_contract_parties_by_target_type(fixture_client): """Test to get a list of contract parties by target_type.""" mock_contract = ContractFactory.create() target_ids = [ '8941b2f5-f0d9-49b1-bfa7-186b684299b1', '2a2aee19-7c67-423a-a7c6-420c246f6f9f' ] [ContractPartyFactory.create( contract=mock_contract, target_id=target_id ) for target_id in target_ids] ContractPartyFactory( contract=mock_contract, deleted_by='Testing' ) contract_id = mock_contract.contract_id target_type = CONTRACT_PARTY_TARGET_TYPES.CONTRIBUTOR res = fixture_client.get( f'/contract/{contract_id}/{target_type}/parties/?limit=10&offset=0' ) assert res.status_code == 200 assert res.json['total_count'] == 2 assert res.json['items'] == [{ 'contract_party_id': 1, 'contract_id': contract_id, 'target_id': '8941b2f5-f0d9-49b1-bfa7-186b684299b1', 'target_type': target_type }, { 'contract_party_id': 2, 'contract_id': contract_id, 'target_id': '2a2aee19-7c67-423a-a7c6-420c246f6f9f', 'target_type': target_type }] def test_get_all_contract_parties(fixture_client): """Test to get all contract parties.""" mock_contract = ContractFactory.create() target_ids = [ '8941b2f5-f0d9-49b1-bfa7-186b684299b1', '2a2aee19-7c67-423a-a7c6-420c246f6f9f' ] [ContractPartyFactory.create( contract=mock_contract, target_id=target_id ) for target_id in target_ids] ContractPartyFactory( contract=mock_contract, deleted_by='Testing' ) ContractPartyFactory.create( contract=mock_contract, target_id='7890', target_type=CONTRACT_PARTY_TARGET_TYPES.LABEL ) contract_id = mock_contract.contract_id res = fixture_client.get( f'/contract/{contract_id}/parties/?limit=10&offset=0' ) assert res.status_code == 200 assert res.json['total_count'] == 3 assert res.json['items'] == [{ 'contract_party_id': 1, 'contract_id': contract_id, 'target_id': '8941b2f5-f0d9-49b1-bfa7-186b684299b1', 'target_type': CONTRACT_PARTY_TARGET_TYPES.CONTRIBUTOR }, { 'contract_party_id': 2, 'contract_id': contract_id, 'target_id': '2a2aee19-7c67-423a-a7c6-420c246f6f9f', 'target_type': CONTRACT_PARTY_TARGET_TYPES.CONTRIBUTOR }, { 'contract_party_id': 4, 'contract_id': contract_id, 'target_id': '7890', 'target_type': CONTRACT_PARTY_TARGET_TYPES.LABEL }] def test_delete_contract_party(fixture_client): """Test to delete contract party.""" mock_contract = ContractFactory.create() mock_contract_party = ContractPartyFactory.create(contract=mock_contract) contract_party_id = mock_contract_party.contract_party_id assert mock_contract_party.deleted_at is None assert mock_contract_party.deleted_by is None res = fixture_client.delete(f'/contract-party/{contract_party_id}') assert res.status_code == 204 assert mock_contract_party.deleted_at assert mock_contract_party.deleted_by