"""Functional tests for contract lifecycle schedule detail.""" from abacus_common_logic.constants.error import ERROR_ENTITY_DOES_NOT_EXIST from abacus_contract.tests.utils.factories import ContractLifecycleScheduleDetailFactory def test_get_contract_lifecycle_schedule_detail_by_id(fixture_client): """Test GET Contract Lifecycle Schedule Detail by ID.""" mock_contract_lifecycle_schedule_detail = ( ContractLifecycleScheduleDetailFactory.create() ) schedule_detail_id = ( mock_contract_lifecycle_schedule_detail.contract_lifecycle_schedule_detail_id ) period_interval = mock_contract_lifecycle_schedule_detail.period_interval period_type = mock_contract_lifecycle_schedule_detail.period_type res = fixture_client.get( f'/contract-lifecycle-schedule-detail/{schedule_detail_id}' ) assert res.status_code == 200 assert res.json == { 'contract_lifecycle_schedule_detail_id': schedule_detail_id, 'period_interval': period_interval, 'period_type': period_type, } def test_get_contract_lifecycle_schedule_detail_by_id_error(fixture_client): """Test GET Contract Lifecycle Schedule Detail by ID not found.""" schedule_detail_id = 99999 res = fixture_client.get( f'/contract-lifecycle-schedule-detail/{schedule_detail_id}' ) assert res.status_code == 404 assert res.json['message'] == ERROR_ENTITY_DOES_NOT_EXIST.format( object_type='ContractLifecycleScheduleDetail', object_id=99999 ) def test_get_contract_lifecycle_schedule_detail_by_ids(fixture_client): """Test GET Contract Lifecycle Schedule Detail by IDs.""" mock_contract_lifecycle_schedule_details = ( ContractLifecycleScheduleDetailFactory.create_batch(2) ) schedule_detail_ids = [ schedule_detail.contract_lifecycle_schedule_detail_id for schedule_detail in mock_contract_lifecycle_schedule_details ] schedule_detail_ids.append(99999) period_intervals = [ schedule_detail.period_interval for schedule_detail in mock_contract_lifecycle_schedule_details ] period_types = [ schedule_detail.period_type for schedule_detail in mock_contract_lifecycle_schedule_details ] res = fixture_client.post( '/contract-lifecycle-schedule-detail/dataloader', json=schedule_detail_ids ) assert res.status_code == 200 assert res.json == [ { 'data': { 'contract_lifecycle_schedule_detail_id': schedule_detail_ids[0], 'period_interval': period_intervals[0], 'period_type': period_types[0], }, }, { 'data': { 'contract_lifecycle_schedule_detail_id': schedule_detail_ids[1], 'period_interval': period_intervals[1], 'period_type': period_types[1], }, }, {'data': None}, ]