mirror of
https://github.com/codeninjasllc/discourse.git
synced 2024-12-04 21:01:27 -05:00
3e50313fdc
Since rspec-rails 3, the default installation creates two helper files: * `spec_helper.rb` * `rails_helper.rb` `spec_helper.rb` is intended as a way of running specs that do not require Rails, whereas `rails_helper.rb` loads Rails (as Discourse's current `spec_helper.rb` does). For more information: https://www.relishapp.com/rspec/rspec-rails/docs/upgrade#default-helper-files In this commit, I've simply replaced all instances of `spec_helper` with `rails_helper`, and renamed the original `spec_helper.rb`. This brings the Discourse project closer to the standard usage of RSpec in a Rails app. At present, every spec relies on loading Rails, but there are likely many that don't need to. In a future pull request, I hope to introduce a separate, minimal `spec_helper.rb` which can be used in tests which don't rely on Rails.
90 lines
2.3 KiB
Ruby
90 lines
2.3 KiB
Ruby
require 'rails_helper'
|
|
|
|
describe UsernameChanger do
|
|
|
|
describe '#change' do
|
|
let(:user) { Fabricate(:user) }
|
|
|
|
context 'success' do
|
|
let(:new_username) { "#{user.username}1234" }
|
|
|
|
before do
|
|
@result = described_class.change(user, new_username)
|
|
end
|
|
|
|
it 'returns true' do
|
|
expect(@result).to eq(true)
|
|
end
|
|
|
|
it 'should change the username' do
|
|
user.reload
|
|
expect(user.username).to eq(new_username)
|
|
end
|
|
|
|
it 'should change the username_lower' do
|
|
user.reload
|
|
expect(user.username_lower).to eq(new_username.downcase)
|
|
end
|
|
end
|
|
|
|
context 'failure' do
|
|
let(:wrong_username) { "" }
|
|
let(:username_before_change) { user.username }
|
|
let(:username_lower_before_change) { user.username_lower }
|
|
|
|
before do
|
|
@result = described_class.change(user, wrong_username)
|
|
end
|
|
|
|
it 'returns false' do
|
|
expect(@result).to eq(false)
|
|
end
|
|
|
|
it 'should not change the username' do
|
|
user.reload
|
|
expect(user.username).to eq(username_before_change)
|
|
end
|
|
|
|
it 'should not change the username_lower' do
|
|
user.reload
|
|
expect(user.username_lower).to eq(username_lower_before_change)
|
|
end
|
|
end
|
|
|
|
describe 'change the case of my username' do
|
|
let!(:myself) { Fabricate(:user, username: 'hansolo') }
|
|
|
|
it 'should return true' do
|
|
expect(described_class.change(myself, "HanSolo")).to eq(true)
|
|
end
|
|
|
|
it 'should change the username' do
|
|
described_class.change(myself, "HanSolo")
|
|
expect(myself.reload.username).to eq('HanSolo')
|
|
end
|
|
end
|
|
|
|
describe 'allow custom minimum username length from site settings' do
|
|
before do
|
|
@custom_min = 2
|
|
SiteSetting.min_username_length = @custom_min
|
|
end
|
|
|
|
it 'should allow a shorter username than default' do
|
|
result = described_class.change(user, 'a' * @custom_min)
|
|
expect(result).not_to eq(false)
|
|
end
|
|
|
|
it 'should not allow a shorter username than limit' do
|
|
result = described_class.change(user, 'a' * (@custom_min - 1))
|
|
expect(result).to eq(false)
|
|
end
|
|
|
|
it 'should not allow a longer username than limit' do
|
|
result = described_class.change(user, 'a' * (User.username_length.end + 1))
|
|
expect(result).to eq(false)
|
|
end
|
|
end
|
|
end
|
|
|
|
end
|