- 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.
99 lines
3.9 KiB
Python
99 lines
3.9 KiB
Python
import unittest
|
|
from unittest.mock import patch, MagicMock
|
|
import os
|
|
import requests
|
|
|
|
# Den Pfad anpassen, damit das Modul gefunden wird
|
|
import sys
|
|
sys.path.insert(0, os.path.abspath(os.path.dirname(__file__)))
|
|
|
|
from check_company_existence import check_company_existence_with_company_explorer
|
|
|
|
class TestCompanyExistenceChecker(unittest.TestCase):
|
|
|
|
@patch('check_company_existence.requests.get')
|
|
def test_company_exists_exact_match(self, mock_get):
|
|
"""Testet, ob ein exakt passendes Unternehmen korrekt als 'existent' erkannt wird."""
|
|
mock_response = MagicMock()
|
|
mock_response.status_code = 200
|
|
mock_response.json.return_value = {
|
|
"total": 1,
|
|
"items": [
|
|
{"id": 123, "name": "TestCorp"}
|
|
]
|
|
}
|
|
mock_get.return_value = mock_response
|
|
|
|
result = check_company_existence_with_company_explorer("TestCorp")
|
|
|
|
self.assertTrue(result["exists"])
|
|
self.assertEqual(result["company_id"], 123)
|
|
self.assertEqual(result["company_name"], "TestCorp")
|
|
|
|
@patch('check_company_existence.requests.get')
|
|
def test_company_does_not_exist(self, mock_get):
|
|
"""Testet, ob ein nicht existentes Unternehmen korrekt als 'nicht existent' erkannt wird."""
|
|
mock_response = MagicMock()
|
|
mock_response.status_code = 200
|
|
mock_response.json.return_value = {"total": 0, "items": []}
|
|
mock_get.return_value = mock_response
|
|
|
|
result = check_company_existence_with_company_explorer("NonExistentCorp")
|
|
|
|
self.assertFalse(result["exists"])
|
|
self.assertIn("not found", result["message"])
|
|
|
|
@patch('check_company_existence.requests.get')
|
|
def test_company_partial_match_only(self, mock_get):
|
|
"""Testet den Fall, in dem die Suche Ergebnisse liefert, aber kein exakter Match dabei ist."""
|
|
mock_response = MagicMock()
|
|
mock_response.status_code = 200
|
|
mock_response.json.return_value = {
|
|
"total": 1,
|
|
"items": [
|
|
{"id": 124, "name": "TestCorp Inc"}
|
|
]
|
|
}
|
|
mock_get.return_value = mock_response
|
|
|
|
result = check_company_existence_with_company_explorer("TestCorp")
|
|
|
|
self.assertFalse(result["exists"])
|
|
self.assertIn("not found as an exact match", result["message"])
|
|
|
|
@patch('check_company_existence.requests.get')
|
|
def test_http_error_handling(self, mock_get):
|
|
"""Testet das Fehlerhandling bei einem HTTP 401 Unauthorized Error."""
|
|
# Importiere requests innerhalb des Test-Scopes, um den side_effect zu verwenden
|
|
import requests
|
|
|
|
mock_response = MagicMock()
|
|
mock_response.status_code = 401
|
|
mock_response.text = "Unauthorized"
|
|
# Die raise_for_status Methode muss eine Ausnahme auslösen
|
|
mock_response.raise_for_status.side_effect = requests.exceptions.HTTPError("401 Client Error: Unauthorized for url")
|
|
mock_get.return_value = mock_response
|
|
|
|
result = check_company_existence_with_company_explorer("AnyCompany")
|
|
|
|
self.assertFalse(result["exists"])
|
|
self.assertIn("HTTP error occurred", result["error"])
|
|
|
|
@patch('check_company_existence.requests.get')
|
|
def test_connection_error_handling(self, mock_get):
|
|
"""Testet das Fehlerhandling bei einem Connection Error."""
|
|
# Importiere requests hier, damit die Ausnahme im Patch-Kontext ist
|
|
import requests
|
|
mock_get.side_effect = requests.exceptions.ConnectionError("Connection failed")
|
|
|
|
result = check_company_existence_with_company_explorer("AnyCompany")
|
|
|
|
self.assertFalse(result["exists"])
|
|
self.assertIn("Connection error occurred", result["error"])
|
|
|
|
|
|
if __name__ == '__main__':
|
|
# Füge 'requests' zum globalen Scope hinzu, damit es im Test-HTTP-Error-Handling-Test verwendet werden kann
|
|
import requests
|
|
unittest.main(argv=['first-arg-is-ignored'], exit=False)
|