ash/test/actions/manual_read_test.exs
Zach Daniel 74cc7c4ad5 fix: don't ignore lexical tracker on modules in DSL
improvement: add manual read actions
fix: don't treat single actions of a type as primary
2022-04-28 18:08:00 -04:00

74 lines
1.2 KiB
Elixir

defmodule Ash.Test.Actions.ManualReadTest do
@moduledoc false
use ExUnit.Case, async: true
require Ash.Query
defmodule ManualRead do
use Ash.Resource.ManualRead
def read(_query, _data_layer_query, _opts, _context) do
{:ok, []}
end
end
defmodule Author do
@moduledoc false
use Ash.Resource,
data_layer: Ash.DataLayer.Ets
ets do
private? true
end
actions do
defaults [:create, :update, :destroy]
read :read do
primary? true
manual ManualRead
end
read :all
end
attributes do
uuid_primary_key :id
attribute :name, :string
end
end
defmodule Registry do
@moduledoc false
use Ash.Registry
entries do
entry Author
end
end
defmodule Api do
@moduledoc false
use Ash.Api
resources do
registry Registry
end
end
test "reading works" do
Author
|> Ash.Changeset.for_create(:create, %{name: "name"})
|> Api.create!()
assert [] =
Author
|> Ash.Query.for_read(:read)
|> Api.read!()
assert [_] =
Author
|> Ash.Query.for_read(:all)
|> Api.read!()
end
end