Skip to content

Commit fa98e09

Browse files
committed
Extract shared RejectingPreferencesAdapter into test support
Credo Software Design flags the two identical RejectingAdapter definitions in the controller and dispatcher tests as duplicate code (mass 41). Move the adapter to `test/support/preferences/` and alias it from both call sites.
1 parent 2796a8e commit fa98e09

3 files changed

Lines changed: 22 additions & 27 deletions

File tree

test/controllers/preferences_controller_test.exs

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ defmodule Backpex.PreferencesControllerTest do
122122
Application.put_env(:backpex, Backpex.Preferences,
123123
adapters: [
124124
{"ok.*", InMemory, []},
125-
{"fail.*", Backpex.PreferencesControllerTest.RejectingAdapter, []},
125+
{"fail.*", Backpex.Test.RejectingPreferencesAdapter, []},
126126
{:default, Backpex.Preferences.Adapters.Session, []}
127127
]
128128
)
@@ -175,17 +175,4 @@ defmodule Backpex.PreferencesControllerTest do
175175
end
176176
end
177177

178-
defmodule RejectingAdapter do
179-
@moduledoc false
180-
@behaviour Backpex.Preferences.Adapter
181-
182-
@impl Backpex.Preferences.Adapter
183-
def get(_ctx, _key, _opts), do: {:ok, :not_found}
184-
185-
@impl Backpex.Preferences.Adapter
186-
def get_map(_ctx, _prefix, _opts), do: {:ok, %{}}
187-
188-
@impl Backpex.Preferences.Adapter
189-
def put(_ctx, _key, _value, _opts), do: {:error, :rejected}
190-
end
191178
end

test/preferences_test.exs

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ defmodule Backpex.PreferencesTest do
157157
end
158158

159159
test "adapter returning {:error, reason} is surfaced to the caller" do
160-
with_adapters([{:default, Backpex.PreferencesTest.RejectingAdapter, []}], fn ->
160+
with_adapters([{:default, Backpex.Test.RejectingPreferencesAdapter, []}], fn ->
161161
conn = conn(:post, "/") |> Plug.Test.init_test_session(%{})
162162

163163
log =
@@ -320,18 +320,6 @@ defmodule Backpex.PreferencesTest do
320320
def put(_ctx, _key, _value, _opts), do: raise("boom")
321321
end
322322

323-
defmodule RejectingAdapter do
324-
@moduledoc false
325-
@behaviour Backpex.Preferences.Adapter
326-
327-
@impl Backpex.Preferences.Adapter
328-
def get(_ctx, _key, _opts), do: {:ok, :not_found}
329-
@impl Backpex.Preferences.Adapter
330-
def get_map(_ctx, _prefix, _opts), do: {:ok, %{}}
331-
@impl Backpex.Preferences.Adapter
332-
def put(_ctx, _key, _value, _opts), do: {:error, :rejected}
333-
end
334-
335323
defmodule UnidentifiedAdapter do
336324
@moduledoc false
337325
@behaviour Backpex.Preferences.Adapter
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
defmodule Backpex.Test.RejectingPreferencesAdapter do
2+
@moduledoc """
3+
Test-only `Backpex.Preferences.Adapter` whose `put/4` always returns
4+
`{:error, :rejected}`. Reads succeed as "not found."
5+
6+
Used to exercise the controller's error path and the dispatcher's
7+
short-circuit semantics without having to wire a DB/stubbed adapter.
8+
"""
9+
10+
@behaviour Backpex.Preferences.Adapter
11+
12+
@impl Backpex.Preferences.Adapter
13+
def get(_ctx, _key, _opts), do: {:ok, :not_found}
14+
15+
@impl Backpex.Preferences.Adapter
16+
def get_map(_ctx, _prefix, _opts), do: {:ok, %{}}
17+
18+
@impl Backpex.Preferences.Adapter
19+
def put(_ctx, _key, _value, _opts), do: {:error, :rejected}
20+
end

0 commit comments

Comments
 (0)