feat: count_day_types — compte les jours par type

This commit is contained in:
2026-03-11 20:31:16 +01:00
parent 859d94bfb1
commit a2077e640a
2 changed files with 37 additions and 0 deletions

View File

@@ -23,3 +23,11 @@ def work_minutes_reference(day_type: str) -> int:
def week_balance_minutes(actual_minutes: int, reference_minutes: int) -> int: def week_balance_minutes(actual_minutes: int, reference_minutes: int) -> int:
return actual_minutes - reference_minutes return actual_minutes - reference_minutes
def count_day_types(entries: list) -> dict[str, int]:
"""Retourne un dict {day_type: count} pour une liste d'entrées, sans les zéros."""
counts: dict[str, int] = {}
for entry in entries:
counts[entry.day_type] = counts.get(entry.day_type, 0) + 1
return counts

View File

@@ -40,3 +40,32 @@ def test_week_balance_positive():
def test_week_balance_negative(): def test_week_balance_negative():
assert week_balance_minutes(2200, 2325) == -125 assert week_balance_minutes(2200, 2325) == -125
from app.business.time_calc import count_day_types
from app.models import WorkEntry
from datetime import date
def test_count_day_types_basic():
entries = [
WorkEntry(date=date(2025, 1, 2), day_type="WORK"),
WorkEntry(date=date(2025, 1, 3), day_type="WORK"),
WorkEntry(date=date(2025, 1, 6), day_type="TT"),
WorkEntry(date=date(2025, 1, 7), day_type="GARDE"),
]
result = count_day_types(entries)
assert result == {"WORK": 2, "TT": 1, "GARDE": 1}
def test_count_day_types_empty():
assert count_day_types([]) == {}
def test_count_day_types_single_type():
entries = [
WorkEntry(date=date(2025, 2, 1), day_type="RTT"),
WorkEntry(date=date(2025, 2, 2), day_type="RTT"),
]
result = count_day_types(entries)
assert result == {"RTT": 2}