- Organisiert eine Vielzahl von Skripten aus dem Root-Verzeichnis in thematische Unterordner, um die Übersichtlichkeit zu verbessern und die Migration vorzubereiten. - Verschiebt SuperOffice-bezogene Test- und Hilfsskripte in . - Verschiebt Notion-bezogene Synchronisations- und Import-Skripte in . - Archiviert eindeutig veraltete und ungenutzte Skripte in . - Die zentralen Helfer und bleiben im Root, da sie von mehreren Tools als Abhängigkeit genutzt werden.
60 lines
2.7 KiB
Python
60 lines
2.7 KiB
Python
# 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 |