Fix #4383: Save and display deleted usernames for mods+.
Name changes for deleted users are already visible to mods, so the only thing we need to do here is to generate a name change before the user is deleted.
This commit is contained in:
@@ -57,8 +57,8 @@ class UserDeletion
|
|||||||
raise ValidationError.new("New name could not be found")
|
raise ValidationError.new("New name could not be found")
|
||||||
end
|
end
|
||||||
|
|
||||||
user.name = name
|
request = UserNameChangeRequest.new(user: user, desired_name: name, original_name: user.name)
|
||||||
user.save!
|
request.save!(validate: false) # XXX don't validate so that the 1 name change per week rule doesn't interfere
|
||||||
end
|
end
|
||||||
|
|
||||||
def validate
|
def validate
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ class UserDeletionTest < ActiveSupport::TestCase
|
|||||||
|
|
||||||
context "a valid user deletion" do
|
context "a valid user deletion" do
|
||||||
setup do
|
setup do
|
||||||
@user = create(:user, email_address: build(:email_address))
|
@user = create(:user, name: "foo", email_address: build(:email_address))
|
||||||
@deletion = UserDeletion.new(@user, "password")
|
@deletion = UserDeletion.new(@user, "password")
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -41,6 +41,15 @@ class UserDeletionTest < ActiveSupport::TestCase
|
|||||||
assert_equal("user_#{@user.id}", @user.reload.name)
|
assert_equal("user_#{@user.id}", @user.reload.name)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
should "generate a user name change request" do
|
||||||
|
assert_difference("UserNameChangeRequest.count") do
|
||||||
|
@deletion.delete!
|
||||||
|
end
|
||||||
|
|
||||||
|
assert_equal("foo", UserNameChangeRequest.last.original_name)
|
||||||
|
assert_equal("user_#{@user.id}", UserNameChangeRequest.last.desired_name)
|
||||||
|
end
|
||||||
|
|
||||||
should "reset the password" do
|
should "reset the password" do
|
||||||
@deletion.delete!
|
@deletion.delete!
|
||||||
assert_equal(false, @user.authenticate_password("password"))
|
assert_equal(false, @user.authenticate_password("password"))
|
||||||
|
|||||||
Reference in New Issue
Block a user