* Squish username before validation (#10101)
Fix #10101
* Move before_validation hook to a private method
Also add Unicode wite-spaces to the spec to support the use of squish
over strip.
before_create :generate_keys
before_validation :prepare_contents, if: :local?
+ before_validation :prepare_username, on: :create
before_destroy :clean_feed_manager
private
note&.strip!
end
+ def prepare_username
+ username&.squish!
+ end
+
def generate_keys
return unless local? && !Rails.env.test?
expect(account).to model_have_error_on_field(:username)
end
+ it 'squishes the username before validation' do
+ account = Fabricate(:account, domain: nil, username: " \u3000bob \t \u00a0 \n ")
+ expect(account.username).to eq 'bob'
+ end
+
context 'when is local' do
it 'is invalid if the username is not unique in case-insensitive comparison among local accounts' do
account_1 = Fabricate(:account, username: 'the_doctor')