#  Copyright © 2023 Ingram Micro Inc. All rights reserved.

from datetime import datetime, timezone

from dj_cqrs.constants import SignalType
from dj_cqrs.dataclasses import TransportPayload


def test_transport_payload_infinite_expires():
    payload = TransportPayload.from_message(
        {
            'signal_type': SignalType.SYNC,
            'cqrs_id': 'cqrs_id',
            'instance_data': {},
            'instance_pk': 'id',
            'expires': None,
        },
    )

    assert payload.expires is None


def test_transport_payload_without_expires(mocker, settings):
    fake_now = datetime(2020, 1, 1, second=0, tzinfo=timezone.utc)
    mocker.patch('django.utils.timezone.now', return_value=fake_now)

    settings.CQRS['master']['CQRS_MESSAGE_TTL'] = 10
    expected_expires = datetime(2020, 1, 1, second=10, tzinfo=timezone.utc)

    payload = TransportPayload.from_message(
        {
            'signal_type': SignalType.SYNC,
            'cqrs_id': 'cqrs_id',
            'instance_data': {},
            'instance_pk': 'id',
        },
    )

    assert payload.expires == expected_expires