Skip to content

Commit f39df20

Browse files
committed
Add test case
1 parent bde243b commit f39df20

1 file changed

Lines changed: 29 additions & 0 deletions

File tree

test/polymorphic_embed_test.exs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,35 @@ defmodule PolymorphicEmbedTest do
199199
assert {:error, %Ecto.Changeset{}} = insert_result
200200
end
201201

202+
test "infer type from parent field when type in embed map matches parent field type" do
203+
generator = :polymorphic
204+
reminder_module = get_module(Reminder, generator)
205+
206+
# Both parent field type and embed __type__ are "sms" - they match
207+
sms_reminder_attrs = %{
208+
date: ~U[2020-05-28 02:57:19Z],
209+
text: "This is an SMS reminder #{generator}",
210+
type: "sms",
211+
channel4: %{
212+
__type__: "sms",
213+
number: "02/807.05.53",
214+
country_code: 1,
215+
provider: %{
216+
__type__: "twilio",
217+
api_key: "foo"
218+
}
219+
}
220+
}
221+
222+
insert_result =
223+
struct(reminder_module)
224+
|> reminder_module.changeset(sms_reminder_attrs)
225+
|> Repo.insert()
226+
227+
assert {:ok, %{channel4: %PolymorphicEmbed.Channel.SMS{number: "02/807.05.53"}}} =
228+
insert_result
229+
end
230+
202231
test "validations before casting polymorphic embed still work" do
203232
for generator <- @generators do
204233
reminder_module = get_module(Reminder, generator)

0 commit comments

Comments
 (0)