Current section
Files
Jump to
Current section
Files
lib/serum/dev_server/service/mock.ex
defmodule Serum.DevServer.Service.Mock do
@moduledoc false
_moduledocp = """
A fake implementation of `Serum.DevServer.Service` behaviour for testing.
"""
use GenServer
alias Serum.DevServer.Service
@behaviour Service
@doc false
@spec start_link(binary(), binary()) :: {:ok, pid()} | {:error, term()}
def start_link(src, site) do
GenServer.start_link(__MODULE__, {src, site}, name: __MODULE__)
end
@impl Service
@spec rebuild() :: :ok
def rebuild, do: :ok
@impl Service
@spec source_dir() :: binary()
def source_dir, do: GenServer.call(__MODULE__, :src)
@impl Service
@spec site_dir() :: binary()
def site_dir, do: GenServer.call(__MODULE__, :site)
@impl Service
@spec port() :: pos_integer()
def port, do: 8080
@impl Service
@spec dirty?() :: boolean()
def dirty?, do: false
@impl Service
@spec subscribe() :: :ok
def subscribe, do: :ok
@impl GenServer
def init(args) do
Process.flag(:trap_exit, true)
{:ok, args}
end
@impl GenServer
def handle_call(msg, from, state)
def handle_call(:src, _, {src, _} = state), do: {:reply, src, state}
def handle_call(:site, _, {_, site} = state), do: {:reply, site, state}
@impl GenServer
def terminate(_reason, {_, site}), do: File.rm_rf!(site)
end