File size: 2,187 Bytes
442d016
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import pytest
import pandas as pd
from main_api import pretraiter_donnees, EmployeeInput, GenreEnum, EtatCivilEnum, \
    DepartementEnum, DomaineEtudeEnum, FrequenceDeplacementEnum

def build_employee(**overrides):
    """Crée un EmployeeInput valide, modifiable par overrides."""
    base = dict(
        age=35,
        genre=GenreEnum.masculin,
        etat_civil=EtatCivilEnum.celibataire,
        salaire=5000,
        distance=5,
        departement=DepartementEnum.consulting,
        domaine_etude=DomaineEtudeEnum.transformation_digitale,
        niveau_hierarchique=2,
        poste_freq_deplacement=FrequenceDeplacementEnum.modere,
        emplois_precedents=3,
        experience_totale=8,
        annees_entreprise=5,
        annees_poste=2,
        annees_derniere_promotion=1,
        annees_responsable_actuel=3,
        heures_semaine=40,
        heures_supplementaires=False,
        employes_supervision=0,
        evaluation_precedente=3,
        evaluation_actuelle=3,
        satisfaction_environnement=3,
        satisfaction_travail=3,
        satisfaction_equipe=3,
        satisfaction_balance=3,
        augmentation_salaire=15,
        participation_pee=1,
        formations_completees=2,
    )
    base.update(overrides)
    return EmployeeInput(**base)

def test_pretraiter_donnees_shape_and_columns():
    emp = build_employee()
    df = pretraiter_donnees(emp)

    # 1 ligne
    assert df.shape[0] == 1

    # Colonnes attendues minimales
    expected_cols = {
        "genre",
        "% augementation_salaire_precedente",
        "niveau_education",
        "est_marie",
        "poste_level",
        "freq_deplacement_level",
        "ratio_exp_entreprise",
        "revenu_par_age",
        "satisfaccion_media",
    }
    assert expected_cols.issubset(set(df.columns))

def test_experience_totale_inferieure_annees_entreprise_no_validation():
    emp = build_employee(experience_totale=3, annees_entreprise=5)
    assert emp.experience_totale == 3
    assert emp.annees_entreprise == 5


def test_annees_poste_superieures_annees_entreprise_raise():
    with pytest.raises(ValueError):
        build_employee(annees_poste=6, annees_entreprise=5)