defmodule Ash.Test.QueryTest do @moduledoc false use ExUnit.Case, async: true defmodule User do @moduledoc false use Ash.Resource, data_layer: Ash.DataLayer.Ets ets do private?(true) end actions do read :read do primary? true end read :by_id do argument :id, :uuid, allow_nil?: false filter expr(id == ^arg(:id)) end create :create update :update end attributes do uuid_primary_key :id attribute :name, :string end end defmodule Registry do @moduledoc false use Ash.Registry entries do entry(User) end end defmodule Api do use Ash.Api resources do registry Registry end end describe "read argument validation" do test "it returns an appropriate error when an argument is invalid" do query = Ash.Query.for_read(User, :by_id, %{id: "foobar"}) assert [%Ash.Error.Query.InvalidArgument{field: :id}] = query.errors end end end