"""Unit tests for contract_lifecycle_schedule model.""" from abacus_contract.constants.constants import \ CONTRACT_LIFECYCLE_SCHEDULE_RENEWAL_TYPES from abacus_contract.models import ContractLifecycleSchedule from tests.utils.factories import ContractFactory from tests.utils.factories import ContractLifecycleScheduleDetailFactory from tests.utils.factories import ContractLifecycleScheduleFactory def test_create_contract_lifecycle_schedule(): """Test creating a contract_lifecycle_schedule.""" mock_contract = ContractFactory.create() mock_contract_lifecycle_schedule_detail = \ ContractLifecycleScheduleDetailFactory.create() contract_lifecycle_schedule_detail_id = \ mock_contract_lifecycle_schedule_detail.contract_lifecycle_schedule_detail_id renewal_type = CONTRACT_LIFECYCLE_SCHEDULE_RENEWAL_TYPES.CONTINUOUSLY_ACTIVE args = { 'contract_id': mock_contract.contract_id, 'termination_notice_detail_id': contract_lifecycle_schedule_detail_id, 'renewal_offset_detail_id': None, 'collection_period_detail_id': None, 'renewal_type': renewal_type, 'schedule_end': None } ContractLifecycleSchedule.create(**args) res = ContractLifecycleSchedule.query.all() assert len(res) == 1 assert res[0].contract_id == mock_contract.contract_id assert res[0].termination_notice_detail_id == contract_lifecycle_schedule_detail_id assert res[0].renewal_offset_detail_id is None assert res[0].collection_period_detail_id is None assert res[0].renewal_type == renewal_type assert res[0].schedule_end is None def test_get_by_ids(): """Test to get contract lifecycle schedules by ids.""" mock_contract_1 = ContractFactory.create() mock_contract_2 = ContractFactory.create() mock_contract_lifecycle_schedule_detail_1 = \ ContractLifecycleScheduleDetailFactory.create( period_interval=1, period_type='month' ) mock_contract_lifecycle_schedule_detail_2 = \ ContractLifecycleScheduleDetailFactory.create( period_interval=18, period_type='month' ) mock_contract_lifecycle_schedule_1 = ContractLifecycleScheduleFactory.create( contract=mock_contract_1, termination_notice_detail=mock_contract_lifecycle_schedule_detail_1, renewal_offset_detail=mock_contract_lifecycle_schedule_detail_2, renewal_type=CONTRACT_LIFECYCLE_SCHEDULE_RENEWAL_TYPES.RENEW_PERIODICALLY, ) mock_contract_lifecycle_schedule_2 = ContractLifecycleScheduleFactory.create( contract=mock_contract_1 ) mock_contract_lifecycle_schedule_3 = ContractLifecycleScheduleFactory.create( contract=mock_contract_1, deleted_at='2024-07-12', deleted_by='Test User' ) mock_contract_lifecycle_schedule_4 = ContractLifecycleScheduleFactory.create( contract=mock_contract_2 ) ids = [ mock_contract_lifecycle_schedule_1.contract_lifecycle_schedule_id, mock_contract_lifecycle_schedule_2.contract_lifecycle_schedule_id, mock_contract_lifecycle_schedule_4.contract_lifecycle_schedule_id, mock_contract_lifecycle_schedule_3.contract_lifecycle_schedule_id ] result = ContractLifecycleSchedule.get_by_ids(ids) assert len(result) == 3 assert all([ res.contract_lifecycle_schedule_id in ids[0:3] for res in result ]) def test_get_contract_lifecycle_schedules_by_contract_id(): """Test to get contract lifecycle schedules by contract_id.""" mock_contract_1 = ContractFactory.create() mock_contract_2 = ContractFactory.create() mock_contract_lifecycle_schedule_detail_1 = \ ContractLifecycleScheduleDetailFactory.create( period_interval=1, period_type='month' ) mock_contract_lifecycle_schedule_detail_2 = \ ContractLifecycleScheduleDetailFactory.create( period_interval=18, period_type='month' ) ContractLifecycleScheduleFactory.create( contract=mock_contract_1, termination_notice_detail=mock_contract_lifecycle_schedule_detail_1, renewal_offset_detail=mock_contract_lifecycle_schedule_detail_2, renewal_type=CONTRACT_LIFECYCLE_SCHEDULE_RENEWAL_TYPES.RENEW_PERIODICALLY, ) ContractLifecycleScheduleFactory.create( contract=mock_contract_1 ) ContractLifecycleScheduleFactory.create( contract=mock_contract_1, deleted_at='2024-07-12', deleted_by='Test User' ) ContractLifecycleScheduleFactory.create( contract=mock_contract_2 ) result = ContractLifecycleSchedule.get_contract_lifecycle_schedules_by_contract_id( mock_contract_1.contract_id ) assert len(result) == 2 assert all([res.contract_id == mock_contract_1.contract_id for res in result])