mirror of
https://github.com/ash-project/ash_phoenix.git
synced 2024-09-19 06:42:47 +12:00
improvement: accept multiple fields in AshPhoenix.Form.clear_value/2
(#67)
This commit is contained in:
parent
bd3a6fbb1f
commit
351f46e5af
2 changed files with 32 additions and 1 deletions
|
@ -2070,8 +2070,14 @@ defmodule AshPhoenix.Form do
|
|||
|
||||
@doc """
|
||||
Clears a given input's value on a form.
|
||||
|
||||
Accepts a field (atom) or a list of fields (atoms) as a second argument.
|
||||
"""
|
||||
@spec clear_value(t(), atom) :: any()
|
||||
@spec clear_value(t(), atom | [atom]) :: t()
|
||||
def clear_value(form, field_or_fields) when is_list(field_or_fields) do
|
||||
Enum.reduce(field_or_fields, form, &clear_value(&2, &1))
|
||||
end
|
||||
|
||||
def clear_value(form, field) do
|
||||
form = require_form!(form)
|
||||
string_and_atom = [field, to_string(field)]
|
||||
|
|
|
@ -129,6 +129,31 @@ defmodule AshPhoenix.FormTest do
|
|||
assert form.source.params == %{}
|
||||
assert form.params == %{}
|
||||
end
|
||||
|
||||
test "it clears multiple fields" do
|
||||
form =
|
||||
Post
|
||||
|> Form.for_create(:create)
|
||||
|> Form.validate(%{"excerpt" => "text", "text" => "text"})
|
||||
|
||||
assert Form.value(form, :excerpt) == "text"
|
||||
assert Form.value(form, :text) == "text"
|
||||
|
||||
assert form.source.attributes == %{text: "text"}
|
||||
assert form.source.arguments == %{excerpt: "text"}
|
||||
assert form.source.params == %{"excerpt" => "text", "text" => "text"}
|
||||
assert form.params == %{"excerpt" => "text", "text" => "text"}
|
||||
|
||||
form = Form.clear_value(form, [:excerpt, :text])
|
||||
|
||||
assert Form.value(form, :text) == nil
|
||||
assert Form.value(form, :excerpt) == nil
|
||||
|
||||
assert form.params == %{}
|
||||
assert form.source.arguments == %{}
|
||||
assert form.source.attributes == %{}
|
||||
assert form.source.params == %{}
|
||||
end
|
||||
end
|
||||
|
||||
describe "form_for fields" do
|
||||
|
|
Loading…
Reference in a new issue