# Testplan

## Unit Tests

Aus dem Plugin-Verzeichnis:

```bash
composer install
vendor/bin/phpunit
```

Alternativ aus einer Shopware-Installation:

```bash
vendor/bin/phpunit custom/plugins/SkywalkAddressValidation/tests
```

Abgedeckte Kernfaelle:

- Strasse mit exakt 35 Zeichen ist gueltig.
- Strasse mit 36 Zeichen ist ungueltig.
- Leere Telefonnummer wird vom Plugin nicht als Pflichtfeld behandelt.
- Internationale Telefonnummer mit `+49` ist gueltig.
- Nationale Telefonnummer ohne `+`-Laendervorwahl ist ungueltig.
- Telefonnummer mit Buchstaben ist ungueltig.
- Vorwahlbeispiel wird aus Region ermittelt.
- US-PLZ-Format: `NY 12345` gueltig, `12345` ungueltig.
- CA-PLZ-Format: `ON K1A0B1` gueltig, `K1A0B1` ungueltig.
- AU-PLZ-Format: `NS 1234` und `NSW 1234` gueltig.
- CZ-PLZ-Format: `123 45` gueltig, `12345` ungueltig.
- Nicht konfiguriertes Land erzeugt keine zusaetzliche Plugin-PLZ-Meldung.
- Deaktivierte PLZ-Hinweislogik erzeugt keine zusaetzliche Plugin-PLZ-Meldung.
- Zusaetzliche PLZ-Regeln koennen per JSON-Konfiguration ergaenzt werden.

## Manuelle Tests

- Registrierung B2C mit gueltiger Adresse.
- Registrierung B2B, sofern im Shop vorhanden.
- Checkout als Gast.
- Checkout als eingeloggter Kunde.
- Rechnungsadresse aendern.
- Lieferadresse aendern.
- Neue Adresse im Kundenkonto anlegen.
- Bestehende Adresse im Kundenkonto bearbeiten.

## Akzeptanzfaelle

- `street` mit 35 Zeichen wird akzeptiert.
- `street` mit 36 Zeichen wird abgelehnt.
- Fehler fuer `street` zeigt eine lesbare deutsche Meldung.
- Telefonnummer leer wird nur von Shopware selbst abgelehnt, wenn dort Pflichtfeld aktiv ist.
- `015259802420` wird abgelehnt.
- `+49 152 59802420` wird akzeptiert.
- Telefonnummer wird nach dem Speichern nicht normalisiert.
- Storefront zeigt Hinweis zur maximalen Strassenlaenge.
- Storefront zeigt Hinweis zur Telefonnummer mit Laendervorwahl.
- Falsche PLZ fuer US/CA/AU/CZ zeigt eine feldbezogene Meldung mit dem erwarteten Format.
- PLZ-Werte werden nach dem Speichern nicht normalisiert oder veraendert.

## Regression

- Standard-Shopware-E-Mail-Validierung funktioniert weiterhin.
- Shopware-Pflichtfeldlogik bleibt unveraendert.
- Shopware-PLZ-Pflicht- und Laengenpruefung bleiben unveraendert.
- Fuer nicht konfigurierte Laender bleibt das bisherige Shopware-Verhalten unveraendert.
- Bestehende Adressen werden nicht automatisch veraendert.
- Syncline-/SelectLine-Export wird durch das Plugin nicht direkt veraendert.
- Produkt-, Warenkorb-, Zahlungs- und Versandlogik bleiben unveraendert.
