from datetime import datetime, timezone as dt_timezone import pytest from apps.core.templatetags.jalali import jalali_date, jalali_datetime, jalali_datetime_precise, persian_time def test_jalali_datetime_uses_iran_time_persian_month_and_digits(): value = datetime(2026, 9, 6, 5, 0, tzinfo=dt_timezone.utc) assert jalali_datetime(value) == "۱۵ شهریور ۱۴۰۵، ساعت ۰۸:۳۰" assert jalali_date(value) == "۱۵ شهریور ۱۴۰۵" assert persian_time(value) == "۰۸:۳۰" def test_jalali_filters_fail_safely_for_empty_values(): assert jalali_datetime(None) == "" assert jalali_date(None) == "" assert persian_time(None) == "" @pytest.mark.parametrize("value,expected", [ (datetime(2026, 9, 5, 22, 31, 17, tzinfo=dt_timezone.utc), "۱۵ شهریور ۱۴۰۵، ساعت ۰۲:۰۱:۱۷"), (None, ""), ]) def test_opening_timestamp_includes_seconds_in_iran_time(value, expected): assert jalali_datetime_precise(value) == expected