"""Unit Tests for contract_term_schedule model.""" from abacus_contract.models.contract_term_schedule import ContractTermSchedule from abacus_contract.tests.utils.factories import ( ContractTermFactory, ContractTermScheduleFactory, ) def test_create_contract_term_schedule(create_mock_schedule): """Test to create contract_term_schedule record.""" mock_contract_term = ContractTermFactory.create() mock_contract_term_schedule = ContractTermSchedule.create( contract_term_id=mock_contract_term.contract_term_id, schedule_id=1 ) result = ContractTermSchedule.query.all() assert len(result) == 1 assert result[0] == mock_contract_term_schedule def test_get_by_term_id(create_mock_schedule): """Test to get contract term schedules by contract_term_id.""" mock_contract_term = ContractTermFactory.create() contract_term_id = mock_contract_term.contract_term_id ContractTermScheduleFactory.create( contract_term=mock_contract_term, schedule_id=1, deleted_by='test_user', deleted_at='2023-08-18', ) ContractTermScheduleFactory.create(contract_term=mock_contract_term, schedule_id=2) items = ContractTermSchedule.get_by_term_id(contract_term_id) assert len(items) == 1 assert items[0].schedule_id == 2 def test_get_by_term_ids(create_mock_schedule): """Batch fetch across term ids, excluding soft-deleted schedules.""" term_a = ContractTermFactory.create() term_b = ContractTermFactory.create() term_unrequested = ContractTermFactory.create() ContractTermScheduleFactory.create(contract_term=term_a, schedule_id=1) ContractTermScheduleFactory.create(contract_term=term_b, schedule_id=2) # Soft-deleted schedule for a requested term must be excluded. ContractTermScheduleFactory.create( contract_term=term_a, schedule_id=3, deleted_by='test_user', deleted_at='2023-08-18', ) # Schedule for an unrequested term must not be returned. ContractTermScheduleFactory.create(contract_term=term_unrequested, schedule_id=1) items = ContractTermSchedule.get_by_term_ids( [term_a.contract_term_id, term_b.contract_term_id] ) assert sorted(item.schedule_id for item in items) == [1, 2] assert {item.contract_term_id for item in items} == { term_a.contract_term_id, term_b.contract_term_id, }