ash_csv/test/ash_csv_test.exs
2023-08-02 12:28:48 -04:00

78 lines
1.6 KiB
Elixir

defmodule AshCsvTest do
use ExUnit.Case, async: false
alias AshCsv.Test.{Api, Post}
require Ash.Query
setup do
on_exit(fn ->
File.rm_rf!("test/data_files")
end)
end
test "resources can be created" do
Post
|> Ash.Changeset.new(%{title: "title"})
|> Api.create!()
assert [%{title: "title"}] = Api.read!(Post)
end
test "resources can be upserted" do
Post
|> Ash.Changeset.new(%{title: "title", unique: "foo"})
|> Api.create!()
Post
|> Ash.Changeset.new(%{title: "new_title", unique: "foo"})
|> Api.create!(upsert?: true, upsert_identity: :unique_unique)
assert [%{title: "new_title"}] = Api.read!(Post)
end
test "a resource can be updated" do
post =
Post
|> Ash.Changeset.new(%{title: "title"})
|> Api.create!()
post
|> Ash.Changeset.new(%{title: "new_title"})
|> Api.update!()
assert [%{title: "new_title"}] = Api.read!(Post)
end
test "a resource can be deleted" do
post =
Post
|> Ash.Changeset.new(%{title: "title"})
|> Api.create!()
Api.destroy!(post)
assert [] = Api.read!(Post)
end
test "filters/sorts can be applied" do
Post
|> Ash.Changeset.new(%{title: "title1"})
|> Api.create!()
Post
|> Ash.Changeset.new(%{title: "title2"})
|> Api.create!()
Post
|> Ash.Changeset.new(%{title: "title3"})
|> Api.create!()
results =
Post
|> Ash.Query.filter(title in ["title1", "title2"])
|> Ash.Query.sort(:title)
|> Api.read!()
assert [%{title: "title1"}, %{title: "title2"}] = results
end
end