Remove the join_date future-date validation closes #482 #495
2 changed files with 34 additions and 8 deletions
|
|
@ -473,11 +473,6 @@ defmodule Mv.Membership.Member do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Join date not in future
|
|
||||||
validate compare(:join_date, less_than_or_equal_to: &Date.utc_today/0),
|
|
||||||
where: [present(:join_date)],
|
|
||||||
message: "cannot be in the future"
|
|
||||||
|
|
||||||
# Exit date not before join date
|
# Exit date not before join date
|
||||||
validate compare(:exit_date, greater_than: :join_date),
|
validate compare(:exit_date, greater_than: :join_date),
|
||||||
where: [present([:join_date, :exit_date])],
|
where: [present([:join_date, :exit_date])],
|
||||||
|
|
|
||||||
|
|
@ -49,12 +49,43 @@ defmodule Mv.Membership.MemberTest do
|
||||||
assert error_message(errors, :email) =~ "is not a valid email"
|
assert error_message(errors, :email) =~ "is not a valid email"
|
||||||
end
|
end
|
||||||
|
|
||||||
test "Join date cannot be in the future", %{actor: actor} do
|
test "Join date can be in the future", %{actor: actor} do
|
||||||
attrs = Map.put(@valid_attrs, :join_date, Date.utc_today() |> Date.add(1))
|
attrs = Map.put(@valid_attrs, :join_date, Date.utc_today() |> Date.add(1))
|
||||||
|
|
||||||
assert {:error,
|
assert {:ok, _member} = Membership.create_member(attrs, actor: actor)
|
||||||
%Ash.Error.Invalid{errors: [%Ash.Error.Changes.InvalidAttribute{field: :join_date}]}} =
|
end
|
||||||
|
|
||||||
|
test "Join date far in the future (2099) is accepted", %{actor: actor} do
|
||||||
|
attrs = Map.put(@valid_attrs, :join_date, ~D[2099-12-31])
|
||||||
|
|
||||||
|
assert {:ok, _member} = Membership.create_member(attrs, actor: actor)
|
||||||
|
end
|
||||||
|
|
||||||
|
test "Join date today is accepted", %{actor: actor} do
|
||||||
|
attrs = Map.put(@valid_attrs, :join_date, Date.utc_today())
|
||||||
|
|
||||||
|
assert {:ok, _member} = Membership.create_member(attrs, actor: actor)
|
||||||
|
end
|
||||||
|
|
||||||
|
test "Join date in the future is accepted on update", %{actor: actor} do
|
||||||
|
{:ok, member} = Membership.create_member(@valid_attrs, actor: actor)
|
||||||
|
|
||||||
|
assert {:ok, _updated} =
|
||||||
|
Membership.update_member(member, %{join_date: Date.utc_today() |> Date.add(30)},
|
||||||
|
actor: actor
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
test "Exit date before future join date is rejected", %{actor: actor} do
|
||||||
|
attrs =
|
||||||
|
@valid_attrs
|
||||||
|
|> Map.put(:join_date, Date.utc_today() |> Date.add(10))
|
||||||
|
|> Map.put(:exit_date, Date.utc_today() |> Date.add(5))
|
||||||
|
|
||||||
|
assert {:error, %Ash.Error.Invalid{errors: errors}} =
|
||||||
Membership.create_member(attrs, actor: actor)
|
Membership.create_member(attrs, actor: actor)
|
||||||
|
|
||||||
|
assert error_message(errors, :exit_date) =~ "cannot be before join date"
|
||||||
end
|
end
|
||||||
|
|
||||||
test "Exit date is optional but must not be before join date if both are specified", %{
|
test "Exit date is optional but must not be before join date if both are specified", %{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue