Some checks failed
continuous-integration/drone/push Build is failing
- Config, Client, SyncContact, Vereinfacht module tests (no real API) - vereinfacht_test_README: document test scope
59 lines
1.7 KiB
Elixir
59 lines
1.7 KiB
Elixir
defmodule Mv.VereinfachtTest do
|
|
@moduledoc """
|
|
Tests for Mv.Vereinfacht business logic.
|
|
|
|
No real API calls; tests "not configured" path and pure helpers (format_error).
|
|
"""
|
|
use Mv.DataCase, async: false
|
|
|
|
alias Mv.Vereinfacht
|
|
|
|
setup do
|
|
clear_vereinfacht_env()
|
|
:ok
|
|
end
|
|
|
|
describe "sync_member/1" do
|
|
test "returns :ok when Vereinfacht is not configured (no-op)" do
|
|
member = Mv.Fixtures.member_fixture()
|
|
|
|
assert Vereinfacht.sync_member(member) == :ok
|
|
end
|
|
end
|
|
|
|
describe "sync_members_without_contact/0" do
|
|
test "returns {:error, :not_configured} when Vereinfacht is not configured" do
|
|
assert Vereinfacht.sync_members_without_contact() == {:error, :not_configured}
|
|
end
|
|
end
|
|
|
|
describe "format_error/1" do
|
|
test "formats HTTP error with detail" do
|
|
assert Vereinfacht.format_error({:http, 422, "The email field is required."}) ==
|
|
"Vereinfacht: The email field is required."
|
|
end
|
|
|
|
test "formats HTTP error without detail" do
|
|
assert Vereinfacht.format_error({:http, 500, nil}) ==
|
|
"Vereinfacht: API error (HTTP 500)."
|
|
end
|
|
|
|
test "formats request_failed" do
|
|
assert Vereinfacht.format_error({:request_failed, %{reason: :econnrefused}}) ==
|
|
"Vereinfacht: Request failed (e.g. connection error)."
|
|
end
|
|
|
|
test "formats invalid_response and other terms" do
|
|
assert Vereinfacht.format_error({:invalid_response, %{}}) ==
|
|
"Vereinfacht: Invalid API response."
|
|
|
|
assert Vereinfacht.format_error(:timeout) == "Vereinfacht: :timeout"
|
|
end
|
|
end
|
|
|
|
defp clear_vereinfacht_env do
|
|
System.delete_env("VEREINFACHT_API_URL")
|
|
System.delete_env("VEREINFACHT_API_KEY")
|
|
System.delete_env("VEREINFACHT_CLUB_ID")
|
|
end
|
|
end
|