Files
redmine-reporter/tests/test_utils.py
Кокос Артем Николаевич 2db0ab1f0b Tighten configuration and export handling
2026-05-22 17:41:56 +07:00

81 lines
2.0 KiB
Python

from redmine_reporter.utils import (
get_month_name_from_range,
get_version,
hours_to_human,
)
def test_hours_to_human_zero():
assert hours_to_human(0) == ""
assert hours_to_human(-1) == ""
def test_hours_to_human_whole_hours():
assert hours_to_human(1.0) == ""
assert hours_to_human(8.0) == ""
def test_hours_to_human_minutes_only():
assert hours_to_human(0.75) == "45м"
assert hours_to_human(0.5) == "30м"
def test_hours_to_human_mixed():
assert hours_to_human(2.5) == "2ч 30м"
assert hours_to_human(1.5) == "1ч 30м"
def test_hours_to_human_rounding():
assert hours_to_human(3.1666) == "3ч 10м" # 190 минут -> 3ч 10м
def test_get_month_name_from_range():
assert get_month_name_from_range("2026-01-01", "2026-01-31") == "Январь"
assert get_month_name_from_range("2025-12-01", "2026-02-15") == "Февраль"
def test_get_month_name_from_range_all_months():
months = [
"Январь",
"Февраль",
"Март",
"Апрель",
"Май",
"Июнь",
"Июль",
"Август",
"Сентябрь",
"Октябрь",
"Ноябрь",
"Декабрь",
]
for i, name in enumerate(months, start=1):
to_date = f"2026-{i:02d}-01"
assert get_month_name_from_range("2026-01-01", to_date) == name
def test_get_month_name_from_range_invalid_fallback():
"""Невалидная дата -- возвращается 'Январь'."""
assert get_month_name_from_range("invalid", "also_invalid") == "Январь"
def test_get_version_with_attribute():
class MockIssue:
fixed_version = "v2.5.0"
assert get_version(MockIssue()) == "v2.5.0"
def test_get_version_without_attribute():
class MockIssue:
pass
assert get_version(MockIssue()) == "<N/A>"
def test_get_version_none_attribute():
class MockIssue:
fixed_version = None
assert get_version(MockIssue()) == "<N/A>"