# EspoCRM E2E Test Suite Automatisierte End-to-End Tests für Custom EspoCRM Entities. ## Überblick Das Test-Framework führt automatisiert folgende Tests durch: ### ✅ CRUD-Operationen - **Create**: Erstellen von Testdatensätzen für alle Custom Entities - **Read**: Validierung der erstellten Datensätze - **Update**: Änderung von Feldern - **Delete**: Löschen der Test-Daten ### 🔗 Relationship-Tests - **Link**: Verknüpfung von Entities über Relationships - **Unlink**: Entfernung von Verknüpfungen - **Verification**: Prüfung der korrekten Verknüpfung ## Getestete Entities 1. **CMietobjekt** - Mietobjekte (Wohnungen, Häuser, etc.) 2. **CVmhMietverhältnis** - Mietverhältnisse 3. **CKündigung** - Kündigungen 4. **CBeteiligte** - Beteiligte Personen (Mieter, Vermieter) 5. **CMietinkasso** - Mietinkasso-Verfahren 6. **CVmhRäumungsklage** - Räumungsklagen ## Getestete Relationships - CVmhMietverhältnis ↔ CMietobjekt - CKündigung ↔ CVmhMietverhältnis - CBeteiligte ↔ CVmhMietverhältnis (als Mieter/Vermieter) ## Installation ### Voraussetzungen - Python 3.6+ - `requests` Bibliothek ```bash pip3 install requests ``` ## Verwendung ### Schnellstart ```bash ./run_e2e_tests.sh ``` ### Direkte Python-Ausführung ```bash python3 e2e_tests.py ``` ## Konfiguration Die Konfiguration erfolgt in [e2e_tests.py](e2e_tests.py#L20-L25): ```python CONFIG = { 'base_url': 'https://crm.bitbylaw.com', 'api_key': '2b0747ca34d15032aa233ae043cc61bc', 'username': 'dev-test' } ``` ## Ausgabe Das Framework generiert eine detaillierte Testübersicht: ``` ================================================================================ TEST SUMMARY ================================================================================ ✅ CMietobjekt: 4/4 tests passed ✓ create 0.234s ✓ read 0.123s ✓ update 0.156s ✓ delete 0.089s ✅ CVmhMietverhltnis: 4/4 tests passed ✓ create 0.267s ✓ read 0.134s ✓ update 0.178s ✓ delete 0.092s ================================================================================ Total: 24/24 tests passed (0 failed) Time: 3.45s ================================================================================ ``` ## Architektur ### Komponenten #### 1. **espocrm_api_client.py** API-Client für EspoCRM REST API mit folgenden Features: - CRUD-Operationen (Create, Read, Update, Delete) - Relationship-Management (Link, Unlink) - Fehlerbehandlung und Logging #### 2. **e2e_tests.py** Haupttest-Framework mit: - `EntityTestBase`: Basis-Klasse für Entity-Tests - Spezifische Test-Klassen für jede Entity - `TestTracker`: Ergebnis-Tracking und Reporting - Automatisches Cleanup #### 3. **run_e2e_tests.sh** Shell-Wrapper mit: - Dependency-Checks - Farbiger Ausgabe - Exit-Code-Handling ## Erweiterung ### Neue Entity hinzufügen 1. Neue Test-Klasse erstellen: ```python class CMyEntityTest(EntityTestBase): def __init__(self, client: EspoCRMAPIClient, tracker: TestTracker): super().__init__(client, tracker) self.entity_type = 'CMyEntity' def run_full_test(self) -> Optional[str]: # Create data = { 'name': f'Test Entity {datetime.now().strftime("%Y%m%d_%H%M%S")}', # ... weitere Felder } record_id = self.test_create(data) if not record_id: return None # Read self.test_read(record_id) # Update self.test_update(record_id, {'field': 'new_value'}) return record_id ``` 2. Test in `run_all_tests()` einbinden: ```python print("\n🔷 Testing CMyEntity...") myentity_test = CMyEntityTest(client, tracker) myentity_id = myentity_test.run_full_test() ``` 3. Cleanup-Order anpassen falls Dependencies bestehen ### Neue Relationships testen ```python # Link testen entity_test.test_link( record_id='123', link_name='relationshipName', foreign_id='456' ) # Unlink testen entity_test.test_unlink( record_id='123', link_name='relationshipName', foreign_id='456' ) ``` ## Fehlerbehebung ### Connection Fehler ``` ❌ Connection failed: HTTPError 401 ``` → API-Key oder Username prüfen ### Entity nicht gefunden ``` ❌ API Error: POST https://crm.bitbylaw.com/api/v1/CMyEntity Status: 404 ``` → Entity-Name prüfen (z.B. `CKndigung` statt `CKuendigung`) ### Relationship nicht gefunden ``` AssertionError: Link not found: xyz123 ``` → Relationship-Name und Richtung prüfen ## Best Practices 1. **Immer cleanup durchführen**: Tests hinterlassen keine Datenreste 2. **Eindeutige Namen**: Timestamps in Test-Daten-Namen 3. **Dependencies beachten**: Lösch-Reihenfolge ist wichtig 4. **Fehlerbehandlung**: Jeder Test ist isoliert ## Weitere Informationen - [EspoCRM REST API Dokumentation](https://docs.espocrm.com/development/api/) - [Projektübersicht](KI_OVERVIEW_README.md) - [Validierungs-Tools](VALIDATION_TOOLS.md) ## Support Bei Fragen oder Problemen: 1. Logs prüfen: Test-Ausgabe enthält detaillierte Fehlermeldungen 2. API-Dokumentation konsultieren 3. Entity-Definitionen in `custom/Espo/Custom/Resources/metadata/entityDefs/` prüfen