Skip to content

Commit

Permalink
Fix bug when cast_polymorphic_embed/3 is called
Browse files Browse the repository at this point in the history
after change/2
  • Loading branch information
mathieuprog committed Sep 20, 2022
1 parent c67ea23 commit c1f7e84
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 1 deletion.
2 changes: 1 addition & 1 deletion lib/polymorphic_embed.ex
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ defmodule PolymorphicEmbed do
end
end

changeset.params
(changeset.params || %{})
|> Map.fetch(to_string(field))
|> case do
:error when required ->
Expand Down
18 changes: 18 additions & 0 deletions test/polymorphic_embed_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -531,6 +531,24 @@ defmodule PolymorphicEmbedTest do
end
end

test "cast embed after change/2 call should succeed" do
for generator <- @generators do
reminder_module = get_module(Reminder, generator)

changeset = Ecto.Changeset.change(struct(reminder_module))

changeset =
if polymorphic?(generator) do
PolymorphicEmbed.cast_polymorphic_embed(changeset, :channel)
else
Ecto.Changeset.cast_embed(changeset, :channel)
end

assert changeset.valid?
assert map_size(changeset.changes) == 0
end
end

test "loading a nil embed" do
for generator <- @generators do
reminder_module = get_module(Reminder, generator)
Expand Down

0 comments on commit c1f7e84

Please sign in to comment.