Condition - Ordering

Setup

defmodule Foo do
  use(Mazurka.Resource)

  param(foo)

  condition(foo != "bar")

  condition(foo != "baz")

  condition(throw(:foo))

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

action

catch_throw(Foo.action([], %{"foo" => "foo"}, %{}, %{}))

action first condition failure

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

action second condition failure

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

affordance

catch_throw(Foo.affordance([], %{"foo" => "foo"}, %{}, %{}))

affordance first condition failure

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

affordance second condition failure

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