"""Test Abacus Event schema.""" import pytest from abacus_common_logic.utils.dates import safe_format_datetime from marshmallow import ValidationError from abacus_event.schemas.abacus_event import ( AbacusEventByTargetTypeSchema, AbacusEventPaymentApprovalCountSchema, AbacusEventSchema, RetryEventsSchema, ) from tests.utils.factories import AbacusEventFactory def test_abacus_event_schema(): """Test Abacus Event schema.""" abacus_event = AbacusEventFactory.create() dumped = AbacusEventSchema().dump(abacus_event) assert dumped['abacus_event_id'] == abacus_event.abacus_event_id assert dumped['event_date'] == safe_format_datetime(abacus_event.event_date) assert dumped['event_name'] == abacus_event.event_name assert dumped['target_id'] == abacus_event.target_id assert dumped['target_type'] == abacus_event.target_type assert dumped['created_by'] == abacus_event.created_by def test_abacus_event_payment_approval_count_schema(): """Test payment approval count schema.""" mock_data = {'payment_group_payment_id': 1, 'approval_count': 6} response = AbacusEventPaymentApprovalCountSchema().dump(mock_data) assert response['payment_group_payment_id'] == mock_data['payment_group_payment_id'] assert response['approval_count'] == mock_data['approval_count'] def test_abacus_event_by_target_type_schema(): """Test event by target type schema.""" abacus_event = AbacusEventFactory.create() dumped = AbacusEventByTargetTypeSchema().dump(abacus_event) assert dumped['abacus_event_id'] == abacus_event.abacus_event_id assert dumped['event_name'] == abacus_event.event_name assert dumped['statement_period_id'] == abacus_event.statement_period_id assert dumped['event_date'] == safe_format_datetime(abacus_event.event_date) assert dumped['rolled_back_at'] == abacus_event.rolled_back_at assert dumped['created_by'] == abacus_event.created_by assert dumped['target_id'] == abacus_event.target_id def test_retry_events_schema_load_valid(): """Test Retry Events schema load valid data.""" data = {'target_type': 'some_type', 'target_id': 123, 'event_name': 'SOME_EVENT'} result = RetryEventsSchema().load(data) assert result == data def test_retry_events_schema_load_missing_fields(): """Test Retry Events schema load with missing fields.""" data = {} with pytest.raises(ValidationError) as excinfo: RetryEventsSchema().load(data) assert 'target_type' in excinfo.value.messages assert 'event_name' in excinfo.value.messages