lib/chore_runner/chore_case/test_reporter.ex

defmodule ChoreRunner.ChoreCase.TestReporter do
  use GenServer

  def init(_) do
    {:ok, []}
  end

  def start_link(_) do
    GenServer.start_link(__MODULE__, [])
  end

  def handle_cast(event, state), do: {:noreply, [event | state]}

  def handle_call({:assert_logged, enum_func}, _, state) do
    {:reply, Enum.find(state, enum_func), state}
  end

  def handle_call(event, _, state), do: {:reply, :ok, [event | state]}

  def assert_event(pid, event) do
    GenServer.call(pid, {:assert_event, event})
  end
end