ash/test/resource/changes/set_new_attribute_test.exs
Zach Daniel c0d8a86987 improvement: support resources directly in API modules
improvement: compile time warning on resources not detected in any apis
2023-07-13 01:38:21 -04:00

50 lines
1 KiB
Elixir

defmodule Ash.Test.Resource.Changes.SetNewAttributeTest do
@moduledoc false
use ExUnit.Case, async: true
defmodule Resource do
use Ash.Resource, data_layer: Ash.DataLayer.Ets
attributes do
uuid_primary_key :id
attribute :name, :string
end
actions do
defaults [:read]
create :create do
change set_new_attribute(:name, "default_name")
end
end
end
defmodule Registry do
@moduledoc false
use Ash.Registry
entries do
entry Resource
end
end
defmodule Api do
use Ash.Api
resources do
registry Registry
end
end
test "set_new_attributes set attribute when it's not already changing" do
%Resource{name: "default_name"} =
Resource |> Ash.Changeset.for_create(:create) |> Api.create!()
end
test "set_new_attribute does not set attribute when it's already changing" do
%Resource{name: "specific_name"} =
Resource |> Ash.Changeset.for_create(:create, %{name: "specific_name"}) |> Api.create!()
end
end