Current section
Files
Jump to
Current section
Files
lib/sandbox_case/sandbox/cachex.ex
defmodule SandboxCase.Sandbox.Cachex do
@moduledoc false
@behaviour SandboxCase.Sandbox.Adapter
@impl true
def available? do
Code.ensure_loaded?(Cachex.Sandbox)
end
@impl true
def setup(config) do
names = extract_names(config)
{:ok, _} = Cachex.Sandbox.start(names)
:ok
end
@impl true
def propagate_keys(config) do
names = extract_names(config)
Enum.map(names, &{:cachex_sandbox, &1})
end
defp extract_names(config) when is_list(config) do
case Keyword.get(config, :names) do
nil -> Enum.filter(config, &is_atom/1)
names -> names
end
end
@impl true
def checkout(_config) do
mod = Cachex.Sandbox
if Process.whereis(mod) do
mod.checkout()
end
end
@impl true
def checkin(nil), do: :ok
def checkin(token) do
mod = Cachex.Sandbox
if Process.whereis(mod) do
mod.checkin(token)
end
:ok
end
end