From 237895d180094cade0c641ccddb0a92d1f6271b4 Mon Sep 17 00:00:00 2001 From: Nicolas Oudard Date: Wed, 27 Nov 2024 14:35:28 +0100 Subject: [PATCH] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20la=20colonne=20Stat?= =?UTF-8?q?ut=20(#1078)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tasks/business_logic/serialize_to_json.py | 4 +- .../business_logic/source_data_normalize.py | 13 +++++- .../test_source_data_normalize.py | 44 ++++++++++++++++++- 3 files changed, 57 insertions(+), 4 deletions(-) diff --git a/dags/sources/tasks/business_logic/serialize_to_json.py b/dags/sources/tasks/business_logic/serialize_to_json.py index 81bb9bf66..e0e63dff7 100644 --- a/dags/sources/tasks/business_logic/serialize_to_json.py +++ b/dags/sources/tasks/business_logic/serialize_to_json.py @@ -109,8 +109,8 @@ def db_data_prepare( ) df_joined.loc[ - df_joined["proposition_services"].apply(lambda x: x == []), "status" - ] = "SUPPRIME" + df_joined["proposition_services"].apply(lambda x: x == []), "statut" + ] = "INACTIF" df_joined.drop("acteur_id", axis=1, inplace=True) diff --git a/dags/sources/tasks/business_logic/source_data_normalize.py b/dags/sources/tasks/business_logic/source_data_normalize.py index 9faa0f851..499a9d596 100755 --- a/dags/sources/tasks/business_logic/source_data_normalize.py +++ b/dags/sources/tasks/business_logic/source_data_normalize.py @@ -125,7 +125,18 @@ def source_data_normalize( df[["adresse", "code_postal", "ville"]] = df.apply(extract_details, axis=1) if "statut" in df.columns: - df["statut"] = df["statut"].map({1: "ACTIF", 0: "SUPPRIME"}) + df["statut"] = df["statut"].map( + { + 1: "ACTIF", + 0: "SUPPRIME", + "ACTIF": "ACTIF", + "INACTIF": "INACTIF", + "SUPPRIME": "SUPPRIME", + } + ) + df["statut"] = df["statut"].fillna("ACTIF") + else: + df["statut"] = "ACTIF" if "public_accueilli" in df.columns: diff --git a/dags_unit_tests/sources/tasks/business_logic/test_source_data_normalize.py b/dags_unit_tests/sources/tasks/business_logic/test_source_data_normalize.py index 44899279f..66458fb99 100755 --- a/dags_unit_tests/sources/tasks/business_logic/test_source_data_normalize.py +++ b/dags_unit_tests/sources/tasks/business_logic/test_source_data_normalize.py @@ -249,7 +249,7 @@ class TestSourceDataNormalize: - [ ] test merge_duplicated_acteurs - [ ] test columns_to_add_by_default - [ ] test adresse_format_ban - - [ ] test statut + - [x] test statut - [x] test public_accueilli (+ suppression des pro) - [x] test uniquement_sur_rdv - [x] test exclusivite_de_reprisereparation @@ -281,6 +281,48 @@ def source_data_normalize_kwargs(self, acteurtype_id_by_code, source_id_by_code) "source_id_by_code": source_id_by_code, } + @pytest.mark.parametrize( + "statut, statut_expected", + [ + (None, "ACTIF"), + ("fake", "ACTIF"), + (np.nan, "ACTIF"), + (0, "SUPPRIME"), + (1, "ACTIF"), + ("ACTIF", "ACTIF"), + ("INACTIF", "INACTIF"), + ("SUPPRIME", "SUPPRIME"), + ], + ) + def test_statut(self, statut, statut_expected, source_data_normalize_kwargs): + source_data_normalize_kwargs["df_acteur_from_source"] = pd.DataFrame( + { + "identifiant_externe": ["1"], + "ecoorganisme": ["source1"], + "source_id": ["source_id1"], + "acteur_type_id": ["decheterie"], + "produitsdechets_acceptes": ["Plastic Box"], + "statut": [statut], + } + ) + df = source_data_normalize(**source_data_normalize_kwargs) + + assert df["statut"].iloc[0] == statut_expected + + def test_statut_no_column(self, source_data_normalize_kwargs): + source_data_normalize_kwargs["df_acteur_from_source"] = pd.DataFrame( + { + "identifiant_externe": ["1"], + "ecoorganisme": ["source1"], + "source_id": ["source_id1"], + "acteur_type_id": ["decheterie"], + "produitsdechets_acceptes": ["Plastic Box"], + } + ) + df = source_data_normalize(**source_data_normalize_kwargs) + + assert df["statut"].iloc[0] == "ACTIF" + @pytest.mark.parametrize( "label_et_bonus, label_et_bonus_expected", [