lib/espec/assertions/enum/have_min.ex

defmodule ESpec.Assertions.Enum.HaveMin do
  @moduledoc """
  Defines 'have_min' assertion.

  it do: expect(collection).to have_min(value)
  """
  use ESpec.Assertions.Interface

  defp match(enum, val) do
    result = Enum.min(enum)
    {result == val, result}
  end

  defp success_message(enum, val, _result, positive) do
    to = if positive, do: "is", else: "is not"
    "The minimum value of `#{inspect(enum)}` #{to} `#{val}`."
  end

  defp error_message(enum, val, result, positive) do
    to = if positive, do: "to be", else: "not to be"

    "Expected the minimum value of `#{inspect(enum)}` #{to} `#{val}` but the minimum is `#{result}`."
  end
end