Coverage for app/tests/test_models.py: 100%
27 statements
« prev ^ index » next coverage.py v7.6.10, created at 2026-06-04 22:29 +0000
« prev ^ index » next coverage.py v7.6.10, created at 2026-06-04 22:29 +0000
1import pytest
2import time_machine
3from pydantic import ValidationError
5from app.models import PYPI_DOWNLOADS_MIN_DATE, TimeRange
8def test_time_range_default_value() -> None:
9 time_range = TimeRange()
10 assert time_range.value == "3months"
13def test_time_range_valid_values() -> None:
14 valid_values = [
15 "1month",
16 "3months",
17 "6months",
18 "1year",
19 "2years",
20 "5years",
21 "allTime",
22 "allTimeCumulative",
23 "allTimeCumulativeAlignTimeline",
24 ]
25 for value in valid_values:
26 time_range = TimeRange(value=value) # type: ignore
27 assert time_range.value == value
30def test_time_range_invalid_value() -> None:
31 with pytest.raises(ValidationError):
32 TimeRange(value="invalid") # type: ignore
35@time_machine.travel("2024-01-15")
36def test_time_range_date_str_calculation() -> None:
37 test_cases = [
38 ("1month", "2023-12-15"),
39 ("3months", "2023-10-15"),
40 ("6months", "2023-07-15"),
41 ("1year", "2023-01-15"),
42 ("2years", "2022-01-15"),
43 ("5years", "2019-01-15"),
44 ]
46 for value, expected_date in test_cases:
47 time_range = TimeRange(value=value) # type: ignore
48 assert time_range.date_str == expected_date
51@time_machine.travel("2024-01-15")
52def test_time_range_all_time_values() -> None:
53 all_time_values = ["allTime", "allTimeCumulative", "allTimeCumulativeAlignTimeline"]
55 for value in all_time_values:
56 time_range = TimeRange(value=value) # type: ignore
57 assert time_range.date_str == PYPI_DOWNLOADS_MIN_DATE