"""Unit tests for Contract Lifecycle schemas.""" import datetime from abacus_contract.schemas.contract_lifecycle import ( BaseContractLifecycleSchema, ContractLifecycleDetailSchema, ContractLifecyclePostSchema, ) from abacus_contract.tests.utils.factories import ContractLifecycleFactory def test_base_contract_lifecycle_schema(): """Test contract_lifecycle base schema.""" mock_contract_lifecycle = ContractLifecycleFactory.create() res = BaseContractLifecycleSchema().dump(mock_contract_lifecycle) assert res == { 'contract_id': mock_contract_lifecycle.contract_id, 'contract_lifecycle_schedule_id': mock_contract_lifecycle.contract_lifecycle_schedule_id, 'last_renewed': None, 'lifecycle_status': mock_contract_lifecycle.lifecycle_status, 'lifecycle_term_start': str(mock_contract_lifecycle.lifecycle_term_start), 'lifecycle_term_end': mock_contract_lifecycle.lifecycle_term_end, 'renewal_effective': mock_contract_lifecycle.renewal_effective, 'termination_notice_deadline': mock_contract_lifecycle.termination_notice_deadline, 'termination_notice_received': mock_contract_lifecycle.termination_notice_received, 'termination_effective': mock_contract_lifecycle.termination_effective, 'collection_start': mock_contract_lifecycle.collection_start, 'collection_end': mock_contract_lifecycle.collection_end, } def test_contract_lifecycle_detail_schema(): """Test contract_lifecycle detail schema.""" mock_contract_lifecycle = ContractLifecycleFactory.create() res = ContractLifecycleDetailSchema().dump(mock_contract_lifecycle) assert res == { 'contract_lifecycle_id': mock_contract_lifecycle.contract_lifecycle_id, 'contract_id': mock_contract_lifecycle.contract_id, 'contract_lifecycle_schedule_id': mock_contract_lifecycle.contract_lifecycle_schedule_id, 'last_renewed': None, 'lifecycle_status': mock_contract_lifecycle.lifecycle_status, 'lifecycle_term_start': str(mock_contract_lifecycle.lifecycle_term_start), 'lifecycle_term_end': mock_contract_lifecycle.lifecycle_term_end, 'renewal_effective': mock_contract_lifecycle.renewal_effective, 'termination_notice_deadline': mock_contract_lifecycle.termination_notice_deadline, 'termination_notice_received': mock_contract_lifecycle.termination_notice_received, 'termination_effective': mock_contract_lifecycle.termination_effective, 'collection_start': mock_contract_lifecycle.collection_start, 'collection_end': mock_contract_lifecycle.collection_end, } def test_contract_lifecycle_post_schema(): """Test contract_lifecycle POST schema.""" mock_post_request_payload = {'lifecycle_term_start': datetime.date(2024, 7, 30)} res = ContractLifecyclePostSchema().dump(mock_post_request_payload) assert res == { 'lifecycle_term_start': str(mock_post_request_payload['lifecycle_term_start']) }