# 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