classement, ajoute une suite de tests pytest - calcul.py: matin_debut/fin, aprem_debut/fin et pause_dejeuner_fin sont paramétrables via config.json > plages (moteur de calcul de l'heure de sortie optimale inclus, pas seulement l'affichage). Défauts identiques à l'ancien comportement, validé par la suite de tests. - stats.py: les seuils de conformité utilisent la même config. - main.py/templates: warn de saisie et suffixes de cible dynamiques. - Rappels ntfy: serveur, topic et plage horaire (rappel_debut_h/fin_h) configurables par utilisateur depuis /settings, plus en dur dans le code. - Page classement supprimée (pas de compétition entre utilisateurs). - Nouvelle suite pytest (app/tests/), à lancer via `docker compose run --rm pointeuse pytest -v`.
43 lines
1.6 KiB
Python
43 lines
1.6 KiB
Python
from calcul import DEFAULT_PLAGES
|
|
from stats import _day_compliant
|
|
|
|
|
|
def _p(matin_entree=None, matin_sortie=None, aprem_entree=None, aprem_sortie=None):
|
|
return {
|
|
"matin_entree": matin_entree, "matin_sortie": matin_sortie,
|
|
"aprem_entree": aprem_entree, "aprem_sortie": aprem_sortie,
|
|
}
|
|
|
|
|
|
def test_day_compliant_journee_dans_les_clous():
|
|
p = _p("08:50", "12:05", "13:55", "17:10")
|
|
assert _day_compliant(p, mc=False, ac=False, plages=DEFAULT_PLAGES) is True
|
|
|
|
|
|
def test_day_compliant_entree_matin_en_retard():
|
|
p = _p("09:10", "12:05", "13:55", "17:10")
|
|
assert _day_compliant(p, mc=False, ac=False, plages=DEFAULT_PLAGES) is False
|
|
|
|
|
|
def test_day_compliant_sortie_aprem_trop_tot():
|
|
p = _p("08:50", "12:05", "13:55", "16:45")
|
|
assert _day_compliant(p, mc=False, ac=False, plages=DEFAULT_PLAGES) is False
|
|
|
|
|
|
def test_day_compliant_journee_incomplete_renvoie_none():
|
|
p = _p("08:50", "12:05") # pas d'aprem
|
|
assert _day_compliant(p, mc=False, ac=False, plages=DEFAULT_PLAGES) is None
|
|
|
|
|
|
def test_day_compliant_conge_journee_entiere_renvoie_none():
|
|
p = _p()
|
|
assert _day_compliant(p, mc=True, ac=True, plages=DEFAULT_PLAGES) is None
|
|
|
|
|
|
def test_day_compliant_plages_personnalisees():
|
|
plages = {**DEFAULT_PLAGES, "matin_debut": "08:00"}
|
|
p = _p("08:30", "12:05", "13:55", "17:10")
|
|
# 08:30 est après 08:00 (plage custom) -> non conforme, alors qu'avec le défaut (09:00) ça le serait
|
|
assert _day_compliant(p, mc=False, ac=False, plages=plages) is False
|
|
assert _day_compliant(p, mc=False, ac=False, plages=DEFAULT_PLAGES) is True
|