docbrown/spec/features/admin_bans_or_warns_user_spec.rb

71 lines
1.9 KiB
Ruby

require "rails_helper"
describe "Admin bans user" do
let(:admin) { create(:user, :super_admin) }
let(:user) { create(:user) }
before do
sign_in admin
visit "/internal/users/#{user.id}/edit"
end
def ban_user
visit "/internal/users/#{user.id}/edit"
select("Ban", from: "user_user_status")
fill_in("user_note_for_current_role", with: "something")
click_button("Update User Status")
end
def warn_user
visit "/internal/users/#{user.id}/edit"
select("Warn", from: "user_user_status")
fill_in("user_note_for_current_role", with: "something")
click_button("Update User Status")
end
def add_tag_moderator_role
tag = FactoryBot.create(:tag)
user.add_role :tag_moderator, tag
end
def unban_user
visit "/internal/users/#{user.id}/edit"
select("Regular Member", from: "user_user_status")
fill_in("user_note_for_current_role", with: "good user")
click_button("Update User Status")
end
it "checks that the user is warned, has a note, and privileges are removed" do
user.add_role :trusted
add_tag_moderator_role
warn_user
expect(user.warned).to eq(true)
expect(Note.last.reason).to eq "Warn"
expect(user.has_role?(:tag_moderator)).to eq(false)
end
# to-do: add spec for invalid bans
it "checks that the user is banned and has note" do
ban_user
expect(user.banned).to eq(true)
expect(Note.last.reason).to eq "Ban"
end
it "removes other roles if user is banned" do
user.add_role :trusted
user.add_role :video_permission
add_tag_moderator_role
ban_user
expect(user.banned).to eq(true)
expect(user.trusted).to eq(false)
expect(user.warned).to eq(false)
expect(user.has_role?(:video_permission)).to eq(false)
expect(user.has_role?(:tag_modertor)).to eq(false)
end
it "unbans user" do
user.add_role :banned
unban_user
expect(user.has_role?(:banned)).to eq(false)
end
end