"""Test legacy_contract logic.""" from unittest.mock import patch from abacus_contract.logic import legacy_contract as logic from tests.utils.factories import ContractFactory from tests.utils.factories import LegacyContractFactory @patch('abacus_contract.logic.legacy_contract.models') def test_create_legacy_contract(mock_models): """Test creating a new legacy contract.""" contract = ContractFactory.create() oa_contract_id = 22 mock_models.Contract.get_by_id_or_error.return_value = contract mock_models.LegacyContract.create.return_value = { 'legacy_contract_id': 1, 'contract_id': contract.contract_id, 'oa_contract_id': oa_contract_id } res = logic.create_legacy_contract(contract.contract_id, oa_contract_id) assert res.status == 201 assert res.message mock_models.LegacyContract.create.assert_called_once_with( contract_id=contract.contract_id, oa_contract_id=oa_contract_id ) def test_update_legacy_contract(): """Test updating a legacy_contract.""" oa_contract_id = 22 new_oa_contract_id = 44 legacy_contract = LegacyContractFactory.create(oa_contract_id=oa_contract_id) # no legacy_contract_id logic.update_legacy_contract(legacy_contract, None) assert legacy_contract.oa_contract_id == oa_contract_id # same legacy_contract_id logic.update_legacy_contract(legacy_contract, oa_contract_id) assert legacy_contract.oa_contract_id == oa_contract_id # new oa_contract_id logic.update_legacy_contract(legacy_contract, new_oa_contract_id) assert legacy_contract.oa_contract_id == new_oa_contract_id @patch('abacus_contract.logic.legacy_contract.models') def test_get_legacy_contract_by_contract_id(mock_models): """Test to get legacy_contract by contract_id.""" contract = ContractFactory.create() mock_legacy_contract = LegacyContractFactory.create(contract=contract) mock_models.LegacyContract.get_by_contract_id.return_value = mock_legacy_contract result = logic.get_legacy_contract_by_contract_id(contract.contract_id) assert result.status == 200 mock_models.LegacyContract.get_by_contract_id \ .assert_called_once_with(contract.contract_id)