From 80939f5e223f3d7166097076316ed87c08ba74d2 Mon Sep 17 00:00:00 2001 From: evazion Date: Wed, 9 Mar 2022 00:20:18 -0600 Subject: [PATCH] users: fix name changes not being validated. Fix names not being validated when a user changes their name. Regression in 5ce724f1e. --- app/models/user_name_change_request.rb | 2 +- .../user_name_change_requests_controller_test.rb | 8 ++++++++ test/unit/user_name_change_request_test.rb | 8 +++----- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/app/models/user_name_change_request.rb b/app/models/user_name_change_request.rb index 3b8daded1..11b59617d 100644 --- a/app/models/user_name_change_request.rb +++ b/app/models/user_name_change_request.rb @@ -6,7 +6,7 @@ class UserNameChangeRequest < ApplicationRecord validate :not_limited, on: :create validates :original_name, presence: true - validates :desired_name, presence: true + validates :desired_name, user_name: true, presence: true, on: :create after_create :update_name! diff --git a/test/functional/user_name_change_requests_controller_test.rb b/test/functional/user_name_change_requests_controller_test.rb index e8183a463..9539ae52d 100644 --- a/test/functional/user_name_change_requests_controller_test.rb +++ b/test/functional/user_name_change_requests_controller_test.rb @@ -28,6 +28,14 @@ class UserNameChangeRequestsControllerTest < ActionDispatch::IntegrationTest assert_redirected_to profile_path assert_equal("zun", @user.reload.name) end + + should "fail if the new name is invalid" do + assert_no_changes(-> { @user.reload.name }) do + post_auth user_name_change_requests_path, @user, params: { user_name_change_request: { desired_name: "foo__bar" }} + + assert_response :success + end + end end context "show action" do diff --git a/test/unit/user_name_change_request_test.rb b/test/unit/user_name_change_request_test.rb index 697e48939..cb0218c66 100644 --- a/test/unit/user_name_change_request_test.rb +++ b/test/unit/user_name_change_request_test.rb @@ -15,11 +15,9 @@ class UserNameChangeRequestTest < ActiveSupport::TestCase should "not validate if the desired name already exists" do assert_difference("UserNameChangeRequest.count", 0) do - req = UserNameChangeRequest.create( - :user_id => @requester.id, - :original_name => @requester.name, - :desired_name => @requester.name - ) + req = build(:user_name_change_request, user: @requester, original_name: @requester.name, desired_name: @requester.name) + req.valid? + assert_equal(["Desired name already exists"], req.errors.full_messages) end end