# -*- 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)