refactor(backend): Paketwurzel de.werkbaum, Tests auf RestTestClient

Das Backend-Geruest kam unter der Platzhalter-Wurzel com.example.editor
herein und widersprach backend/CLAUDE.md. Umgezogen nach de.werkbaum: 17
Kotlin-Dateien, Gradle-group, apiPackage/modelPackage der OpenAPI-Generierung,
die jacoco-Ausschluesse und das Cucumber-glue-Paket. Jetzt war es billig, mit
jeder Woche Entwicklung waere es teurer geworden.

Die BDD-Tests nutzen jetzt RestTestClient statt TestRestTemplate, das in
Spring Boot 4 als Auslaufmodell gilt. Weil Cucumber Senden und Pruefen
trennt, wird die fluent API nicht fuer Zusicherungen genutzt, sondern ueber
returnResult das Ergebnis festgehalten.

Nachgemessen: 22 Tests gruen, check inklusive Coverage-Verifikation besteht,
91,7 % Zeilenabdeckung, generierter Code weiterhin ausgeschlossen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
mhoennig
2026-08-26 15:21:34 +02:00
co-authored by Claude Opus 5
parent 7684872a42
commit f3afc8dfa8
24 changed files with 286 additions and 241 deletions
@@ -1,4 +1,4 @@
package com.example.editor
package de.werkbaum
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
@@ -1,14 +1,14 @@
package com.example.editor.api
package de.werkbaum.api
import com.example.editor.generated.api.DocumentsApi
import com.example.editor.generated.model.Document as ApiDocument
import com.example.editor.generated.model.DocumentCreateRequest
import com.example.editor.generated.model.DocumentHistoryEntry as ApiHistoryEntry
import com.example.editor.generated.model.DocumentUpdateRequest
import com.example.editor.generated.model.RestoreRequest
import com.example.editor.domain.Document
import com.example.editor.domain.DocumentHistoryEntry
import com.example.editor.service.DocumentService
import de.werkbaum.generated.api.DocumentsApi
import de.werkbaum.generated.model.Document as ApiDocument
import de.werkbaum.generated.model.DocumentCreateRequest
import de.werkbaum.generated.model.DocumentHistoryEntry as ApiHistoryEntry
import de.werkbaum.generated.model.DocumentUpdateRequest
import de.werkbaum.generated.model.RestoreRequest
import de.werkbaum.domain.Document
import de.werkbaum.domain.DocumentHistoryEntry
import de.werkbaum.service.DocumentService
import org.springframework.http.HttpStatus
import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.RequestMapping
@@ -1,7 +1,7 @@
package com.example.editor.api
package de.werkbaum.api
import com.example.editor.service.DocumentConflictException
import com.example.editor.service.DocumentNotFoundException
import de.werkbaum.service.DocumentConflictException
import de.werkbaum.service.DocumentNotFoundException
import org.springframework.http.HttpStatus
import org.springframework.http.ProblemDetail
import org.springframework.web.bind.annotation.ExceptionHandler
@@ -1,4 +1,4 @@
package com.example.editor.domain
package de.werkbaum.domain
import java.time.OffsetDateTime
import java.util.UUID
@@ -1,4 +1,4 @@
package com.example.editor.domain
package de.werkbaum.domain
import java.time.OffsetDateTime
import java.util.UUID
@@ -1,6 +1,6 @@
package com.example.editor.persistence
package de.werkbaum.persistence
import com.example.editor.domain.Document
import de.werkbaum.domain.Document
import jakarta.persistence.Column
import jakarta.persistence.Entity
import jakarta.persistence.Id
@@ -1,7 +1,7 @@
package com.example.editor.persistence
package de.werkbaum.persistence
import com.example.editor.domain.ChangeType
import com.example.editor.domain.DocumentHistoryEntry
import de.werkbaum.domain.ChangeType
import de.werkbaum.domain.DocumentHistoryEntry
import jakarta.persistence.Column
import jakarta.persistence.Entity
import jakarta.persistence.EnumType
@@ -1,7 +1,7 @@
package com.example.editor.persistence
package de.werkbaum.persistence
import com.example.editor.domain.DocumentHistoryEntry
import com.example.editor.repository.DocumentHistoryRepository
import de.werkbaum.domain.DocumentHistoryEntry
import de.werkbaum.repository.DocumentHistoryRepository
import org.springframework.stereotype.Repository
import java.util.UUID
@@ -1,7 +1,7 @@
package com.example.editor.persistence
package de.werkbaum.persistence
import com.example.editor.domain.Document
import com.example.editor.repository.DocumentRepository
import de.werkbaum.domain.Document
import de.werkbaum.repository.DocumentRepository
import org.springframework.stereotype.Repository
import java.util.UUID
@@ -1,4 +1,4 @@
package com.example.editor.persistence
package de.werkbaum.persistence
import org.springframework.data.jpa.repository.JpaRepository
import java.util.UUID
@@ -1,6 +1,6 @@
package com.example.editor.repository
package de.werkbaum.repository
import com.example.editor.domain.DocumentHistoryEntry
import de.werkbaum.domain.DocumentHistoryEntry
import java.util.UUID
interface DocumentHistoryRepository {
@@ -1,6 +1,6 @@
package com.example.editor.repository
package de.werkbaum.repository
import com.example.editor.domain.Document
import de.werkbaum.domain.Document
import java.util.UUID
/**
@@ -1,4 +1,4 @@
package com.example.editor.service
package de.werkbaum.service
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
@@ -1,3 +1,3 @@
package com.example.editor.service
package de.werkbaum.service
class DocumentConflictException(message: String) : RuntimeException(message)
@@ -1,4 +1,4 @@
package com.example.editor.service
package de.werkbaum.service
import java.util.UUID
@@ -1,10 +1,10 @@
package com.example.editor.service
package de.werkbaum.service
import com.example.editor.domain.ChangeType
import com.example.editor.domain.Document
import com.example.editor.domain.DocumentHistoryEntry
import com.example.editor.repository.DocumentHistoryRepository
import com.example.editor.repository.DocumentRepository
import de.werkbaum.domain.ChangeType
import de.werkbaum.domain.Document
import de.werkbaum.domain.DocumentHistoryEntry
import de.werkbaum.repository.DocumentHistoryRepository
import de.werkbaum.repository.DocumentRepository
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
import java.time.Clock