fix: fix seed not working when :__keep_nil__ is generated using seed_input (#1228)

This commit is contained in:
Robert Timis 2024-06-07 14:14:39 +02:00 committed by GitHub
parent 4d35117649
commit 9c32eab87e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 17 additions and 2 deletions

View file

@ -87,7 +87,7 @@ defmodule Ash.Seed do
record
|> Map.take(attrs)
|> Map.new(fn {key, value} ->
if value == :__keep_nil do
if value == :__keep_nil__ do
{key, nil}
else
{key, value}
@ -111,9 +111,19 @@ defmodule Ash.Seed do
end
def seed!(resource, input) when is_map(input) do
attr_input =
input
|> Map.new(fn {key, value} ->
if value == :__keep_nil__ do
{key, nil}
else
{key, value}
end
end)
resource
|> Ash.Changeset.new()
|> change_attributes(input)
|> change_attributes(attr_input)
|> change_relationships(input)
|> Ash.Changeset.set_defaults(:create, true)
|> create_via_data_layer()

View file

@ -285,6 +285,11 @@ defmodule Ash.Test.GeneratorTest do
test "it seeds correctly a resource" do
assert %Author{} = Ash.Generator.seed!(Author, @meta_generator)
end
test "it works with the value :__keep_nil__" do
assert %Author{metadata: nil} =
Ash.Generator.seed!(Author, %{meta: %{}, metadata: keep_nil()})
end
end
describe "built in generators" do