Param - Single

Setup

defmodule Foo do
  use(Mazurka.Resource)

  param(foo)

  mediatype(Hyper) do
    action() do
      %{"foo" => foo}
    end
  end
end

action

{body, content_type, _} = Foo.action([], %{"foo" => "123"}, %{}, %{})
%{"foo" => "123"} == body
{"application", "json", %{}} = content_type

action missing param

assert_raise(Mazurka.MissingParametersException, fn -> Foo.action([], %{}, %{}, %{}) end)

action nil param

assert_raise(Mazurka.MissingParametersException, fn -> Foo.action([], %{"foo" => nil}, %{}, %{}) end)

affordance

assert_raise(Mazurka.MissingRouterException, fn -> Foo.affordance([], %{"foo" => "123"}, %{}, %{}) end)

affordance missing param

assert_raise(Mazurka.MissingParametersException, fn -> Foo.affordance([], %{}, %{}, %{}) end)

affordance nil param

{body, _} = Foo.affordance([], %{"foo" => nil}, %{}, %{})
%Mazurka.Affordance.Undefined{} = body