Files
ERP/backend/tests/test_date_service.py
T
MMD 934b74ebbd Squashed 'pm/' content from commit 91f3271
git-subtree-dir: pm
git-subtree-split: 91f3271d866fa8ee471cfb6793e334b83e6d2b6e
2026-10-07 15:14:20 +03:30

49 lines
1.5 KiB
Python

"""Unit tests for unified DateService."""
from datetime import date
import pytest
from app.utils.date_service import date_service
def test_date_service_parse_iso():
d = date_service.parse("2026-09-16")
assert d == date(2026, 9, 16)
def test_date_service_parse_jalali():
# 1405/06/25 -> 2026-09-16
d = date_service.parse("1405/06/25")
assert d == date(2026, 9, 16)
def test_date_service_to_jalali():
d = date(2026, 9, 16)
assert date_service.to_jalali(d) == "1405/06/25"
def test_date_service_duration_calculation():
d1 = date(2026, 9, 10)
d2 = date(2026, 9, 15)
# gap between the dates: the end date is not counted
assert date_service.calculate_duration(d1, d2) == 5
assert date_service.calculate_duration(d1, d1) == 0
assert date_service.calculate_duration(None, d2) == 0
# inverted range is not a duration
assert date_service.calculate_duration(d2, d1) == 0
def test_date_service_compute_end_date():
d1 = date(2026, 9, 10)
# 0 days means start and end are the same day
assert date_service.compute_end_date(d1, 0) == d1
# 5 days is the gap, so the end date is 5 days later
assert date_service.compute_end_date(d1, 5) == date(2026, 9, 15)
def test_duration_and_end_date_are_inverses():
"""The pair must round-trip, otherwise saved values drift on reload."""
d1 = date(2026, 9, 10)
for gap in (0, 1, 4, 5, 30):
end = date_service.compute_end_date(d1, gap)
assert date_service.calculate_duration(d1, end) == gap