Current section
Files
Jump to
Current section
Files
lib/maxo_adapt_test.exs
defmodule MaxoAdaptTest do
use ExUnit.Case
use MnemeDefaults
test "only allows valid modes" do
assert_raise CompileError, fn ->
Code.compile_quoted(
quote do
defmodule InvalidMode do
use Adapter, mode: :flurp
behaviour do
@doc ~S"A color's RGB value."
@callback rgb :: {0..255, 0..255, 0..255}
end
def red, do: elem(rgb(), 0)
end
end
)
end
end
defmodule Storage do
use MaxoAdapt, validate: true
behaviour do
@doc ~S"Store an item"
@callback store(item :: term) :: :ok | {:error, atom}
@doc ~S"Delete an item"
@callback delete(term) :: :ok | {:error, atom}
end
end
defmodule PostgreSQL do
@behaviour Storage
@impl Storage
def store(item)
def store(_), do: :ok
@impl Storage
def delete(item)
def delete(_), do: :ok
end
defmodule Redis do
@behaviour Storage
@impl Storage
def store(item)
def store(_), do: :ok
@impl Storage
def delete
def delete, do: :ok
end
test "validates adapters" do
assert Storage.configure(PostgreSQL) == :ok
assert Storage.configure(Redis) == {:error, :invalid_adapter_implementation}
end
end