- Replaced hardcoded schema names with constants (`TEST_SCHEMA`, `CONTROL_SCHEMA`) across multiple tests. - Resolved IDE warnings by removing unused variables (`result`), suppressing `SqlResolve`, and using ASCII-compliant strings. - Corrected typos in test data (`testdb` -> `test_db`, `Produktions` -> `Production`). - Improved readability and maintainability in migration and tenant registry tests by introducing companion object constants.
3.1 KiB
3.1 KiB
| type | status | owner | last_update |
|---|---|---|---|
| Journal | ACTIVE | DevOps Engineer | 2026-04-14 |
Session Log: Finalize and Enable Entries Isolation Integration Test
Problem
Der Test EntriesIsolationIntegrationTest im Modul :backend:services:entries:entries-service war deaktiviert (@Disabled). Er hatte Probleme mit der Daten-Isolierung zwischen verschiedenen Tenants, wenn Exposed mit mehreren Schemas und PostgreSQL-Containern verwendet wurde.
Zusätzlich gab es IDE-Warnungen bezüglich nicht auflösbarer Symbole in SQL-Strings, redundantem runBlocking und ungenutzten Variablen.
Lösung
-
Test-Bereinigung:
- Entfernung der
@DisabledAnnotation. - Behebung der
runBlockingRedundanz durch Verwendung vonrunBlockingauf Test-Methoden-Ebene. - Entfernung ungenutzter Variablen (
saved). - Bereitstellung einer
@TestConfigurationmit einem MockJwtDecoder, um ApplicationContext-Ladefehler durch Security-Abhängigkeiten zu vermeiden.
- Entfernung der
-
Schema-Isolierung fixiert:
- Umstellung der Tabellen-Erstellung im
setupauf JDBC, um zu verhindern, dass Exposed'sTable-Singletons frühzeitig an ein falsches Schema gebunden werden. - Sicherstellung, dass
tenantTransactiondensearch_pathin PostgreSQL korrekt setzt. - Explizite Verwendung von
SET search_pathinnerhalb der Transaktionen im Isolationstest, um Leaks zu vermeiden. - Verifizierung der Isolation: Schreibzugriffe in
event_alanden nun nachweislich nicht mehr inevent_b.
- Umstellung der Tabellen-Erstellung im
-
Verifizierung & Cleanup:
- Alle 10 Tests im Modul (inkl. der neu aktivierten Isolation-Tests) laufen erfolgreich durch.
- IDE-Warnungen in
EntriesIsolationIntegrationTestundJdbcTenantRegistryTestwurden durch@Suppress("SqlResolve"), Verwendung von String-Konstanten/Interpolation ($CONTROL_SCHEMA) und Entfernung ungenutzter Code-Fragmente (nennungRepository,random(),registerDataSource) behoben. - Typos wie "testdb" -> "test_db" und "Produktions" -> "Production" wurden korrigiert.
- Behebung von IDE-Warnungen in
NennungBillingIntegrationTest,BewerbeZeitplanIntegrationTestundDomainHierarchyMigrationTestdurch Entfernung ungenutzter Variablen (result), Ersetzen von Umlauten in Funktionsnamen/Strings durch ASCII-Zeichen und Verwendung von Konstanten für Schema-Namen (TEST_SCHEMA). - Fehlende Spring-Konfigurations-Metadaten für
multitenancy.*wurden inadditional-spring-configuration-metadata.jsonergänzt.
Betroffene Dateien
backend/services/entries/entries-service/src/test/kotlin/at/mocode/entries/service/tenant/EntriesIsolationIntegrationTest.kt: Reaktiviert und repariert.backend/services/entries/entries-service/src/test/kotlin/at/mocode/entries/service/tenant/JdbcTenantRegistryTest.kt: Bereinigt und optimiert.backend/services/entries/entries-service/src/main/resources/META-INF/additional-spring-configuration-metadata.json: Metadaten ergänzt.
Handover
- Der
EntriesIsolationIntegrationTestdient nun als Referenz für Multi-Tenancy Tests mit echten PostgreSQL-Containern. Bei weiteren Tests dieser Art sollte auf das Exposed-Schema-Caching geachtet werden.