tilde.news/spec/requests/users_controller_spec.rb

77 lines
1.8 KiB
Ruby

require 'rails_helper'
describe 'users controller' do
describe 'show user' do
it 'displays the username' do
user = create(:user)
get "/~#{user.username}"
expect(response.body).to include(user.username)
end
end
describe 'user standing' do
let!(:bad_user) { create(:user) }
before do
fc = double('FlaggedCommenters')
bad_user_stats = {
n_flags: 15,
}
allow(fc).to receive(:commenters).and_return({
bad_user.id => bad_user_stats,
})
allow(fc).to receive(:check_list_for).and_return(bad_user_stats)
allow(FlaggedCommenters).to receive(:new).and_return(fc)
end
it "displays to the user" do
sign_in bad_user
get "/~#{bad_user.username}/standing"
expect(response.body).to include("flags")
expect(response.body).to include("You")
end
it "doesn't display to other users" do
user2 = create(:user)
sign_in user2
get "/~#{bad_user.username}/standing"
expect(response.status).to eq(302)
end
it "doesn't display to logged-out users" do
get "/~#{bad_user.username}/standing"
expect(response.status).to eq(302)
end
it "does display to mods" do
mod = create(:user, :moderator)
sign_in mod
get "/~#{bad_user.username}/standing"
expect(response.body).to include("flags")
end
end
describe 'username case mismatch' do
it 'redirects to correct-case user page' do
user = create(:user)
get user_path(user.username.upcase)
expect(response).to redirect_to(user_path(user.username))
end
it 'redirects to correct-case user standing page' do
user = create(:user)
get user_standing_path(user.username.upcase)
expect(response).to redirect_to(user_standing_path(user.username))
end
end
end