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