defmodule EslHnWeb.API.JSONTest do use ExUnit.Case, async: true use ExUnitProperties import EslHn.Test.Data @subject EslHnWeb.API.JSON doctest @subject describe "index/1" do test "for empty list renders empty list" do assert [] == @subject.index(%{items: []}) end property "length of encoded data is equal to items count" do check all(stories <- list_of(story())) do count = length(stories) assert count == length(@subject.index(%{items: stories})) end end property "all IDs are present in result" do check all(stories <- list_of(story())) do ids = stories |> Enum.map(& &1.id) |> Enum.sort() result = @subject.index(%{items: stories}) |> Enum.map(& &1.id) |> Enum.sort() assert ids == result end end end describe "show/1" do property "encoded title is the same as input title" do check all(story <- story()) do assert story.title == @subject.show(%{item: story}).title end end end end