| defmodule Couch.Test.Asserts do |
| @moduledoc """ |
| Custom asserts. |
| """ |
| defmacro assert_on_status(resp, expected, failure_message) do |
| expected_list = List.wrap(expected) |
| |
| expected_msg = case expected_list do |
| [single] -> "Expected #{single}" |
| multiple -> "Expected one of #{inspect(multiple)}" |
| end |
| |
| quote do |
| status_code = unquote(resp).status_code |
| body = unquote(resp).body |
| message = "#{unquote(failure_message)} #{unquote(expected_msg)}, got: #{status_code}, body: #{inspect(body)}" |
| ExUnit.Assertions.assert(status_code in unquote(expected_list), "#{message}") |
| end |
| end |
| end |