- Config, Client, SyncContact, Vereinfacht module tests (no real API) - vereinfacht_test_README: document test scope
29 lines
2.3 KiB
Markdown
29 lines
2.3 KiB
Markdown
# Vereinfacht tests – scope and rationale
|
||
|
||
## Constraint: no real API in CI
|
||
|
||
Tests do **not** call the real Vereinfacht API or a shared test endpoint. All tests use dummy data and either:
|
||
|
||
- Assert behaviour when **Vereinfacht is not configured** (ENV + Settings unset), or
|
||
- Run the **full Member/User flow** with a **unreachable URL** (e.g. `http://127.0.0.1:1`) so the HTTP client fails fast (e.g. `:econnrefused`) and we only assert that the application path does not crash.
|
||
|
||
## What the tests cover
|
||
|
||
| Test file | What it tests | Why it’s enough without an API |
|
||
|-----------|----------------|---------------------------------|
|
||
| **ConfigVereinfachtTest** | `vereinfacht_env_configured?`, `vereinfacht_configured?`, `vereinfacht_contact_view_url` with ENV set/cleared | Pure config logic; no HTTP. |
|
||
| **ClientTest** | `create_contact/1` and `update_contact/2` return `{:error, :not_configured}` when nothing is configured | Ensures the client does not call Req when config is missing. |
|
||
| **VereinfachtTest** | `sync_members_without_contact/0` returns `{:error, :not_configured}` when not configured | Ensures bulk sync is a no-op when config is missing. |
|
||
| **SyncContactTest** | Member create/update with SyncContact change: not configured → no sync; configured with bad URL → action still succeeds, sync may fail | Ensures the Ash change and after_transaction arity are correct and the action result is not broken by sync failures. |
|
||
|
||
## What is *not* tested (and would need a stub or real endpoint)
|
||
|
||
- Actual HTTP request shape (body, headers) and response handling (201/200, error codes).
|
||
- Persistence of `vereinfacht_contact_id` after a successful create.
|
||
- Translation of specific API error payloads into user messages.
|
||
|
||
Those would require either a **Bypass** (or similar) stub in front of Req or a dedicated test endpoint; both are out of scope for the current “no real API” setup.
|
||
|
||
## Conclusion
|
||
|
||
Given the constraint that the API is not called in CI, the tests are **meaningful**: they cover config, “not configured” paths, and integration of SyncContact with Member create/update without crashing. They are **sufficient** for regression safety and refactoring; extending them with a Bypass stub would be an optional next step if we want to assert on request/response shape without hitting the real API.
|