Fix CLI to change an user's email and add a test

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel 2021-04-19 16:50:16 +02:00
parent 9a50d7e6c5
commit ebf192e2c7
No known key found for this signature in database
GPG key ID: A061B9DDE0CA0773
2 changed files with 18 additions and 1 deletions

View file

@ -40,7 +40,7 @@ defmodule Mix.Tasks.Mobilizon.Users.Modify do
with {:ok, %User{} = user} <- Users.get_user_by_email(email), with {:ok, %User{} = user} <- Users.get_user_by_email(email),
attrs <- %{}, attrs <- %{},
role <- calculate_role(admin?, moderator?, user?), role <- calculate_role(admin?, moderator?, user?),
attrs <- process_new_value(attrs, :mail, new_email, user.email), attrs <- process_new_value(attrs, :email, new_email, user.email),
attrs <- process_new_value(attrs, :role, role, user.role), attrs <- process_new_value(attrs, :role, role, user.role),
attrs <- attrs <-
if(disable? && !is_nil(user.confirmed_at), if(disable? && !is_nil(user.confirmed_at),

View file

@ -170,5 +170,22 @@ defmodule Mix.Tasks.Mobilizon.UsersTest do
assert_received {:mix_shell, :error, [message]} assert_received {:mix_shell, :error, [message]}
assert message =~ "Can't use both --enabled and --disable options at the same time." assert message =~ "Can't use both --enabled and --disable options at the same time."
end end
@modified_email "modified@email.tld"
test "change user's email" do
user = insert(:user, email: @email)
Modify.run([@email, "--email", @modified_email])
assert_received {:mix_shell, :info, [output_received]}
assert {:ok, %User{confirmed_at: confirmed_at, email: @modified_email}} =
Users.get_user_by_email(@modified_email)
assert output_received ==
"An user has been modified with the following information:\n - email: #{
@modified_email
}\n - Role: #{user.role}\n - account status: activated on #{confirmed_at} (UTC)\n"
end
end end
end end