@@ -2532,6 +2532,43 @@ defmodule PolymorphicEmbedTest do
25322532 end
25332533
25342534 describe "polymorphic_embed_inputs_for/1" do
2535+ test "errors in form for polymorphic embed and nested embed" do
2536+ reminder_module = get_module ( Reminder , :polymorphic )
2537+
2538+ sms_reminder_attrs = % {
2539+ text: "This is an SMS reminder" ,
2540+ contexts: [
2541+ % {
2542+ __type__: "device" ,
2543+ extra: % { }
2544+ }
2545+ ]
2546+ }
2547+
2548+ changeset =
2549+ reminder_module
2550+ |> struct ( )
2551+ |> reminder_module . changeset ( sms_reminder_attrs )
2552+
2553+ changeset = % { changeset | action: :insert }
2554+
2555+ html_string =
2556+ render_component (
2557+ & liveview_form_with_inputs_for / 1 ,
2558+ % { changeset: changeset , field: :contexts }
2559+ )
2560+
2561+ assert String . contains? (
2562+ html_string ,
2563+ "[type: {"can't be blank", [validation: :required]}]"
2564+ )
2565+
2566+ assert String . contains? (
2567+ html_string ,
2568+ "[imei: {"can't be blank", [validation: :required]}]"
2569+ )
2570+ end
2571+
25352572 test "generates forms that can be rendered (custom type field/identify_by_fields)" do
25362573 reminder_module = get_module ( Reminder , :polymorphic )
25372574
@@ -3549,6 +3586,24 @@ defmodule PolymorphicEmbedTest do
35493586 """
35503587 end
35513588
3589+ defp liveview_form_with_inputs_for ( assigns ) do
3590+ ~H"""
3591+ < . form
3592+ :let = { f }
3593+ for = { @ changeset }
3594+ >
3595+ < . polymorphic_embed_inputs_for field = { f [ @ field ] } :let = { sms_form } >
3596+ <%= text_input sms_form , :number %>
3597+ <%= sms_form . errors |> inspect ( ) %>
3598+ < . inputs_for field = { sms_form [ :extra ] } :let = { channel_form } >
3599+ <%= text_input channel_form , :imei %>
3600+ <%= channel_form . errors |> inspect ( ) %>
3601+ </ . inputs_for >
3602+ </ . polymorphic_embed_inputs_for >
3603+ </ . form >
3604+ """
3605+ end
3606+
35523607 defp polymorphic? ( :polymorphic ) , do: true
35533608 defp polymorphic? ( :not_polymorphic ) , do: false
35543609end
0 commit comments