Files
Brancheneinstufung2/ARCHIVE_legacy_scripts/test_company_explorer_connector.py

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)