Hi All
I have a schema budget that can have many periods. I have a simple live view form that enables me to create a budget and a number of child periods. All works well. I’m now trying to create a test. So far I have the following:
@valid_attrs %{
name: "Budget 1",
budget_periods: [
%{period_number: 1, budget: Decimal.new(10)},
%{period_number: 2, budget: Decimal.new(10)},
%{period_number: 3, budget: Decimal.new(10)},
%{period_number: 4, budget: Decimal.new(10)},
%{period_number: 5, budget: Decimal.new(10)},
%{period_number: 6, budget: Decimal.new(10)},
%{period_number: 7, budget: Decimal.new(10)},
%{period_number: 8, budget: Decimal.new(10)},
%{period_number: 9, budget: Decimal.new(10)},
%{period_number: 10, budget: Decimal.new(10)},
%{period_number: 11, budget: Decimal.new(0)},
%{period_number: 12, budget: Decimal.new(0)}
]
}
I then have the following test:
{:ok, _, html} =
index_live
|> form("#budget_profile-form", budget_profile: @create_attrs)
|> render_submit()
|> follow_redirect(conn, Routes.budget_profile_index_path(conn, :index))
This fails with…
** (ArgumentError) could not find non-disabled input, select or textarea with name "budget_profile[budget_periods][]" within:
<input name="_csrf_token" type="hidden" value="XwsWGyBZSxgvGwA3JXY7KDEOPCIQAT9i1Neaph9nCxJAvNTZb9hqRRR3"/>
<input class="input" id="budget_profile-form_name" name="budget_profile[name]" phx-debounce="blur" type="text" value=""/>
<input class="input" id="budget_profile-form_budget_periods_0_period_number" name="budget_profile[budget_periods][0][period_number]" phx-debounce="blur" type="number" value="1" readonly="readonly"/>
<input class="input" id="budget_profile-form_budget_periods_0_budget" name="budget_profile[budget_periods][0][budget]" phx-debounce="blur" type="text" value="0.0"/>
<input class="input" id="budget_profile-form_budget_periods_1_period_number" name="budget_profile[budget_periods][1][period_number]" phx-debounce="blur" type="number" value="2" readonly="readonly"/>
I guess I need to format my @valid_attrs but I’m not sure how. Has anyone come across this issue and know how to fix it?
cheers
Dave