From 5691e06023ca31e7e8ae2e9f224715394b75bac5 Mon Sep 17 00:00:00 2001 From: Floke Date: Mon, 4 Aug 2025 09:37:04 +0000 Subject: [PATCH] =?UTF-8?q?test=5Fcore=5Ffunctionality.py=20hinzugef=C3=BC?= =?UTF-8?q?gt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test_core_functionality.py | 60 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 test_core_functionality.py diff --git a/test_core_functionality.py b/test_core_functionality.py new file mode 100644 index 00000000..2a7552f1 --- /dev/null +++ b/test_core_functionality.py @@ -0,0 +1,60 @@ +# test_core_functionality.py + +import pytest +from helpers import extract_numeric_value, get_col_idx +from config import COLUMN_ORDER # Wir brauchen die echte Spaltenreihenfolge für den Test + +# --- Testfälle für die kritische Funktion extract_numeric_value --- +# Format: (Input-String, erwarteter Output als String) +umsatz_test_cases = [ + ("ca. 1.234,56 Mio. € (2022)", "1"), # In Mio, Tausendertrenner ., Komma als Dezimal + ("rund 500 Tsd. US-Dollar", "0"), # Tausender wird zu 0.5, gerundet 0 + ("750.000 Euro", "1"), # . als Tausendertrenner, wird zu 0.75, gerundet 1 + ("1,5 Milliarden CHF", "1500"), # Milliarden-Einheit + ("25.7 mn", "26"), # "mn" Abkürzung + ("keine Angabe", "k.A."), # Text + ("0", "0"), # Null-Wert + ("FEHLERHAFTER WERT", "k.A."), # Fehler-Fallback + ("1234567", "1"), # Reine Zahl ohne Einheit + ("€ 850 k", "1"), # "k" für Tausend +] + +mitarbeiter_test_cases = [ + ("ca. 1.234", "1234"), + ("rund 500 Tsd.", "500000"), + ("1,5 Millionen", "1500000"), + ("1.234 (Stand 2023)", "1234"), + ("k.A.", "k.A."), +] + +@pytest.mark.parametrize("input_str, expected", umsatz_test_cases) +def test_extract_umsatz_from_various_formats(input_str, expected): + """Prüft, ob `extract_numeric_value` für Umsatz verschiedene Formate korrekt in Millionen umwandelt.""" + assert extract_numeric_value(input_str, is_umsatz=True) == expected + +@pytest.mark.parametrize("input_str, expected", mitarbeiter_test_cases) +def test_extract_mitarbeiter_from_various_formats(input_str, expected): + """Prüft, ob `extract_numeric_value` für Mitarbeiter verschiedene Formate korrekt in absolute Zahlen umwandelt.""" + assert extract_numeric_value(input_str, is_umsatz=False) == expected + + +# --- Testfälle für die neue, zentrale get_col_idx Funktion --- +def test_get_col_idx_success(): + """Prüft, ob ein gültiger Spaltenname den korrekten Index zurückgibt.""" + # Wir nehmen an, "CRM Name" ist die zweite Spalte laut COLUMN_ORDER + assert get_col_idx("CRM Name") == 1 + # Wir nehmen an, "ReEval Flag" ist die erste Spalte + assert get_col_idx("ReEval Flag") == 0 + +def test_get_col_idx_failure(): + """Prüft, ob ein ungültiger Spaltenname None zurückgibt.""" + assert get_col_idx("Diese Spalte existiert nicht") is None + +def test_get_col_idx_edge_cases(): + """Prüft Randfälle.""" + assert get_col_idx("") is None + assert get_col_idx(None) is None + # Letzte Spalte + last_column_name = COLUMN_ORDER[-1] + expected_last_index = len(COLUMN_ORDER) - 1 + assert get_col_idx(last_column_name) == expected_last_index \ No newline at end of file