refactor: [30388f42] Strukturiere Root-Skripte thematisch neu
- 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.
This commit is contained in:
60
ARCHIVE_legacy_scripts/test_core_functionality.py
Normal file
60
ARCHIVE_legacy_scripts/test_core_functionality.py
Normal file
@@ -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
|
||||
Reference in New Issue
Block a user