"""Unit tests for AbacusOutbox model.""" import uuid from datetime import datetime, timezone from abacus_file_upload.constants import ( ABACUS_OUTBOX_EVENT_TYPES, ABACUS_OUTBOX_TARGET_TYPES, EVENT_PROCESSING_STATUSES, ) from abacus_file_upload.models import AbacusOutbox class TestAbacusOutboxModel: """Tests for AbacusOutbox model.""" def test_create_abacus_outbox(self): """Test creating a AbacusOutbox with all fields.""" next_retry_at = datetime.now(timezone.utc).replace(tzinfo=None, microsecond=0) correlation_id = str(uuid.uuid4()) abacus_outbox = AbacusOutbox.create( target_type=ABACUS_OUTBOX_TARGET_TYPES.FILE_UPLOAD, target_id=1, event_type=ABACUS_OUTBOX_EVENT_TYPES.FILE_UPLOAD_COMPLETED, correlation_id=correlation_id, details={'upload_type': 'flowthrough'}, status=EVENT_PROCESSING_STATUSES.PENDING, retry_count=0, max_retries=3, next_retry_at=next_retry_at, ) assert abacus_outbox.target_type == ABACUS_OUTBOX_TARGET_TYPES.FILE_UPLOAD assert abacus_outbox.target_id == 1 assert ( abacus_outbox.event_type == ABACUS_OUTBOX_EVENT_TYPES.FILE_UPLOAD_COMPLETED ) assert abacus_outbox.correlation_id == correlation_id assert abacus_outbox.details == {'upload_type': 'flowthrough'} assert abacus_outbox.status == EVENT_PROCESSING_STATUSES.PENDING assert abacus_outbox.retry_count == 0 assert abacus_outbox.max_retries == 3 assert abacus_outbox.next_retry_at == next_retry_at