# ED-04-005 – SourceDelivery Integration Test

**Status:** Final

**Related**

- ED-04_SourceDelivery_Aggregate.md
- ED-04-001_SourceDelivery_Domain_Object.md
- ED-04-002_SourceDelivery_Persistence.md
- ED-04-003_SourceDelivery_Repository.md
- ED-04-004_SourceDelivery_Application_Service.md
- ADR002_SOURCE_DELIVERY_MODEL_V4.md
- DM001_Domain_Model_v0.7_FINAL.md
- DM002_Persistence_Model_v0.6_FINAL.md

---

# 1. Ziel

Dieses Work Package überprüft den vollständigen technischen Ablauf zur Erzeugung und Persistierung einer `SourceDelivery`.

Der Test stellt sicher, dass alle in ED-04 entwickelten Komponenten korrekt zusammenarbeiten.

---

# 2. Scope

Der Integrationstest umfasst

- Application Service
- Repository
- Data Mapper
- Datenbank
- Rehydration

Nicht Bestandteil sind

- SourceValue-Verarbeitung
- Candidate Discovery
- Matching
- Reconciliation

---

# 3. Testablauf

Der Test führt den vollständigen Ablauf einer neuen Lieferung aus.

```text
Request
    │
    ▼
SourceDeliveryService
    │
    ▼
SourceDelivery::create(...)
    │
    ▼
Repository
    │
    ▼
Data Mapper
    │
    ▼
Datenbank

    │
    ▼

Repository
    │
    ▼
Rehydration
    │
    ▼
Vergleich aller Attribute
```

---

# 4. Testdaten

## Runtime Context

```text
tenantId          = digicult
sourceSystemId    = digiCULT.web
deliveryChannel   = OPENREFINE_RECONCILIATION_API
```

## Request

```text
delivery_id = OR-TEST-20260725-001
```

---

# 5. Testschritte

## Schritt 1

Application Service erzeugt eine neue `SourceDelivery`.

Erwartung:

- neue interne ID
- Status = RECEIVED
- receivedAt gesetzt

---

## Schritt 2

Die `SourceDelivery` wird über das Repository gespeichert.

Erwartung:

Datensatz wird erfolgreich angelegt.

---

## Schritt 3

Die `SourceDelivery` wird erneut geladen.

Erwartung:

Das Repository liefert ein vollständig rehydriertes Aggregate.

---

## Schritt 4

Alle Attribute werden verglichen.

Zu prüfen sind

- id
- tenantId
- sourceSystemId
- deliveryChannel
- externalDeliveryId
- status
- receivedAt
- completedAt

---

# 6. Erwartetes Ergebnis

Die persistierte Lieferung besitzt folgende fachlichen Werte.

| Attribut | Erwarteter Wert |
|-----------|-----------------|
| tenantId | digicult |
| sourceSystemId | digiCULT.web |
| deliveryChannel | OPENREFINE_RECONCILIATION_API |
| externalDeliveryId | OR-TEST-20260725-001 |
| status | RECEIVED |
| receivedAt | gesetzt |
| completedAt | NULL |

Die interne ID wird während des Tests erzeugt und deshalb nicht fest vorgegeben.

---

# 7. Negativtest

Ein zweiter Test wird ohne

```text
delivery_id
```

ausgeführt.

Erwartung:

```text
externalDeliveryId = NULL
```

Alle übrigen Attribute bleiben unverändert.

---

# 8. Erfolgsbedingungen

Der Integrationstest gilt als erfolgreich, wenn

- das Aggregate erfolgreich erzeugt wird,
- die Persistierung erfolgreich erfolgt,
- die Rehydration erfolgreich erfolgt,
- sämtliche Attribute identisch wiederhergestellt werden,
- optionale Attribute korrekt als `NULL` behandelt werden,
- keine unerwarteten Exceptions auftreten.

---

# 9. Akzeptanzkriterien

Das Work Package gilt als abgeschlossen, wenn

- der vollständige ED-04-Workflow erfolgreich getestet wurde,
- alle beteiligten Komponenten zusammenarbeiten,
- `delivery_id` korrekt nach `externalDeliveryId` übernommen wird,
- eine fehlende `delivery_id` korrekt zu `NULL` führt,
- alle Integrations-Tests erfolgreich ausgeführt werden.