forked from ScoDoc/ScoDoc
118 lines
4.6 KiB
Python
118 lines
4.6 KiB
Python
|
# -*- coding: utf-8 -*-
|
||
|
|
||
|
"""Test Periodes
|
||
|
|
||
|
Utiliser comme:
|
||
|
pytest tests/unit/test_periode.py
|
||
|
"""
|
||
|
import datetime
|
||
|
|
||
|
from app.scodoc.sco_formsemestre import get_periode, sem_in_semestre_scolaire
|
||
|
|
||
|
""" Calcule la session associée à un formsemestre sous la forme (année, période)
|
||
|
année: première année de l'année scolaire
|
||
|
période = 1 (première période de l'année scolaire) ou 2 (deuxième période de l'année scolaire)
|
||
|
les quatre derniers paramètres forment les dates pivots pour l'année (1er août par défaut)
|
||
|
et pour la période (1er décembre par défaut).
|
||
|
Tous les calculs se font à partir de la date de début du formsemestre.
|
||
|
Exemples:
|
||
|
Début FormSemestre pivot_année pivot_periode Résultat
|
||
|
01/01/2022 ( 1, 8) ( 1,12) (2021,2) # A: printemps nord
|
||
|
01/09/2022 ( 1, 8) ( 1,12) (2022,1) # B: automne nord
|
||
|
15/12/2022 ( 1, 8) ( 1,12) (2022,2)
|
||
|
30/07/2023 ( 1, 8) ( 1,12) (2022,2)
|
||
|
01/01/2022 ( 1, 1) ( 1, 8) (2022,1) # antipodes
|
||
|
30/07/2022 ( 1, 1) ( 1, 8) (2022,1) # antipodes
|
||
|
02/08/2022 ( 1, 1) ( 1, 8) (2022,2) # antipodes
|
||
|
30/12/2022 ( 1, 1) ( 1, 8) (2022,2) # antipodes
|
||
|
01/01/2022 ( 3, 1) ( 1, 8) (2021,2) # antipodes l'année scolaire démarre le 3 janvier
|
||
|
10/01/2024 ( 1, 8) ( 1, 2) (2023,2) # pivot période < pivot année
|
||
|
01/06/2024 ( 1, 8) ( 1, 2) (2023,2) # pivot période < pivot année
|
||
|
20/09/2024 ( 1, 8) ( 1, 2) (2024,1) # pivot période < pivot année
|
||
|
"""
|
||
|
|
||
|
|
||
|
def test_default():
|
||
|
# with default
|
||
|
assert (2021, 2) == get_periode(datetime.datetime(2022, 1, 1))
|
||
|
assert (2021, 2) == get_periode(datetime.datetime(2022, 1, 1), 1, 8, 1, 12)
|
||
|
|
||
|
|
||
|
def test_automne_nord():
|
||
|
assert (2022, 1) == get_periode(datetime.datetime(2022, 9, 1))
|
||
|
|
||
|
|
||
|
def test_noel_nord():
|
||
|
assert (2022, 2) == get_periode(datetime.datetime(2022, 12, 15))
|
||
|
|
||
|
|
||
|
def test_étét_nord():
|
||
|
assert (2021, 2) == get_periode(datetime.datetime(2022, 7, 30))
|
||
|
|
||
|
|
||
|
def test_printemps_sud():
|
||
|
assert (2022, 1) == get_periode(datetime.datetime(2022, 1, 1), 1, 1, 1, 8)
|
||
|
|
||
|
|
||
|
def test_automne_sud():
|
||
|
assert (2022, 2) == get_periode(datetime.datetime(2022, 8, 2), 1, 1, 1, 8)
|
||
|
|
||
|
|
||
|
def test_noel_sud():
|
||
|
assert (2022, 2) == get_periode(datetime.datetime(2022, 12, 30), 1, 1, 1, 8)
|
||
|
|
||
|
|
||
|
def test_été_sud():
|
||
|
assert (2022, 1) == get_periode(datetime.datetime(2022, 7, 30), 1, 1, 1, 8)
|
||
|
|
||
|
|
||
|
def test_nouvel_an_sud():
|
||
|
assert (2021, 2) == get_periode(datetime.datetime(2022, 1, 1), 3, 1, 1, 8)
|
||
|
|
||
|
|
||
|
def test_nouvel_an_special_pp_before_pa():
|
||
|
assert (2023, 1) == get_periode(datetime.datetime(2024, 1, 10), 1, 8, 1, 2)
|
||
|
|
||
|
|
||
|
def test_nouvel_été_pp_before_pa():
|
||
|
assert (2023, 2) == get_periode(datetime.datetime(2024, 6, 1), 1, 8, 1, 2)
|
||
|
|
||
|
|
||
|
def test_automne_special_pp_before_pa():
|
||
|
assert (2024, 1) == get_periode(datetime.datetime(2024, 9, 20), 1, 8, 1, 2)
|
||
|
|
||
|
|
||
|
sem_automne = {"date_debut_iso": "2022-09-24"}
|
||
|
sem_nouvel_an = {"date_debut_iso": "2023-01-01"}
|
||
|
sem_printemps = {"date_debut_iso": "2023-03-14"}
|
||
|
sem_été = {"date_debut_iso": "2023-07-11"}
|
||
|
sem_next_year = {"date_debut_iso": "2023-08-16"}
|
||
|
sem_prev_year = {"date_debut_iso": "2022-07-31"}
|
||
|
|
||
|
|
||
|
def test_sem_in_periode1_default():
|
||
|
assert True == sem_in_semestre_scolaire(sem_automne, 2022, 1)
|
||
|
assert False == sem_in_semestre_scolaire(sem_nouvel_an, 2022, 1)
|
||
|
assert False == sem_in_semestre_scolaire(sem_printemps, 2022, 1)
|
||
|
assert False == sem_in_semestre_scolaire(sem_été, 2022, 1)
|
||
|
assert False == sem_in_semestre_scolaire(sem_next_year, 2022, 1)
|
||
|
assert False == sem_in_semestre_scolaire(sem_prev_year, 2022, 1)
|
||
|
|
||
|
|
||
|
def test_sem_in_periode2_default():
|
||
|
assert False == sem_in_semestre_scolaire(sem_automne, 2022, 2)
|
||
|
assert True == sem_in_semestre_scolaire(sem_nouvel_an, 2022, 2)
|
||
|
assert True == sem_in_semestre_scolaire(sem_printemps, 2022, 2)
|
||
|
assert True == sem_in_semestre_scolaire(sem_été, 2022, 2)
|
||
|
assert False == sem_in_semestre_scolaire(sem_next_year, 2022, 1)
|
||
|
assert False == sem_in_semestre_scolaire(sem_prev_year, 2022, 1)
|
||
|
|
||
|
|
||
|
def test_sem_in_annee_default():
|
||
|
assert True == sem_in_semestre_scolaire(sem_automne, 2022, 0)
|
||
|
assert True == sem_in_semestre_scolaire(sem_nouvel_an, 2022)
|
||
|
assert True == sem_in_semestre_scolaire(sem_printemps, 2022, 0)
|
||
|
assert True == sem_in_semestre_scolaire(sem_été, 2022, 0)
|
||
|
assert False == sem_in_semestre_scolaire(sem_next_year, 2022)
|
||
|
assert False == sem_in_semestre_scolaire(sem_prev_year, 2022, 0)
|