diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..809914f --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,27 @@ +name: CI + +on: + push: + branches: [ '**' ] + pull_request: + branches: [ '**' ] + +jobs: + test: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ['3.11'] + steps: + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + - name: Run tests + run: | + pytest -q diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..f15f64e --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,14 @@ +stages: + - test + +test: + image: python:3.11 + stage: test + before_script: + - pip install --upgrade pip + - pip install -r requirements.txt + script: + - pytest -q + only: + - branches + - merge_requests diff --git a/PR_DESCRIPTION.md b/PR_DESCRIPTION.md new file mode 100644 index 0000000..59a6178 --- /dev/null +++ b/PR_DESCRIPTION.md @@ -0,0 +1,40 @@ +Titel: Feature: App‑Factory, Validierung, vCard-Export, Tests + +Kurzbeschreibung +- Ersetzt das papierbasierte Anmeldeformular durch eine Flask-Webseite (App‑Factory). +- Speichert deutsche Adressdaten inkl. Telefon und E‑Mail in SQLite. +- Fügt serverseitige Validierung für PLZ, E‑Mail und Telefon hinzu (`email-validator`, `phonenumbers` mit Fallback). +- Generiert vCard 4.0 nach erfolgreicher Einreichung und speichert sie unter `vcards/`. +- Enthält Unit- und Integrationstests (pytest) und initiale Datenbank-Migrationen (Alembic/Flask‑Migrate). + +Änderungen +- Neue/überarbeitete Dateien: + - `application/` package (App‑Factory, `routes.py`, `models.py`, `extensions.py`) + - `utils.py` (vCard-Generator) + - `templates/index.html` (Formular/Fehlermeldungen) + - `tests/` (Unit- und Integrationstests) + - `migrations/` (gestampfte Basis) + - `requirements.txt` (`email-validator`, `phonenumbers`) + +Testen (lokal) +1. Virtuelle Umgebung aktivieren / Python 3.11 verwenden. +2. Abhängigkeiten installieren: + ```bash + pip install -r requirements.txt + ``` +3. Tests ausführen: + ```bash + pytest -q + ``` + +Migrationshinweise +- `migrations/` ist initialisiert und die DB wurde gestampft. Bei Modelländerungen bitte neue Migrationen mit `flask db migrate` und `flask db upgrade` erzeugen. + +Review-Checklist +- [ ] Validierung (E‑Mail / Telefon / PLZ) prüfen. +- [ ] Formular-UI prüfen (templates/index.html). +- [ ] vCard-Export testen (Erstellung in `vcards/`). +- [ ] CI testen (siehe `.github/workflows/ci.yml` / `.gitlab-ci.yml`). + +Zusätzliche Hinweise +- `email-validator` wird ohne externe Lieferbarkeitschecks verwendet, damit Tests reproduzierbar sind.