ash/test/api/api_test.exs

105 lines
2.4 KiB
Elixir
Raw Normal View History

2019-12-07 21:38:35 +13:00
defmodule Ash.Test.Resource.ApiTest do
use ExUnit.Case, async: true
defmacrop defposts(do: body) do
quote do
defmodule Post do
use Ash.Resource, name: "posts", type: "post", primary_key: false
unquote(body)
end
end
end
defmacrop defapi(opts \\ [], do: body) do
quote do
defmodule Api do
use Ash.Api, unquote(opts)
unquote(body)
end
end
end
describe "representation" do
test "if `interface?: false` is set, interface functions are not defined" do
defapi(interface?: false) do
end
interface_funcs = [
get!: 3,
get!: 3,
read!: 2,
read: 2,
create!: 2,
create: 2,
update: 3,
update!: 3,
destroy: 3,
destroy: 3
]
for {func, arity} <- interface_funcs do
refute :erlang.function_exported(Api, func, arity)
end
end
end
describe "validation" do
test "it fails if `interface?` is not a boolean" do
assert_raise(
Ash.Error.ApiDslError,
"`use Ash.Test.Resource.ApiTest.Api, ...` interface? must be boolean",
2019-12-07 21:38:35 +13:00
fn ->
defapi(interface?: 10) do
end
end
)
end
test "it fails if `max_page_size` is not an integer" do
assert_raise(
Ash.Error.ApiDslError,
"`use Ash.Test.Resource.ApiTest.Api, ...` max_page_size must be integer",
2019-12-07 21:38:35 +13:00
fn ->
defapi(max_page_size: "ten") do
end
end
)
end
test "it fails if `max_page_size` is zero" do
assert_raise(
Ash.Error.ApiDslError,
"`use Ash.Test.Resource.ApiTest.Api, ...` max_page_size failed constraint: must be greater than zero",
fn ->
defapi(max_page_size: 0) do
end
end
)
end
test "it fails if `default_page_size` is not an integer" do
assert_raise(
Ash.Error.ApiDslError,
"`use Ash.Test.Resource.ApiTest.Api, ...` default_page_size must be integer",
2019-12-07 21:38:35 +13:00
fn ->
defapi(default_page_size: "ten") do
end
end
)
end
test "it fails if `default_page_size` is zero" do
assert_raise(
Ash.Error.ApiDslError,
"`use Ash.Test.Resource.ApiTest.Api, ...` default_page_size failed constraint: must be greater than zero",
fn ->
defapi(default_page_size: 0) do
end
end
)
end
2020-01-14 07:39:55 +13:00
end
2019-12-07 21:38:35 +13:00
end