docbrown/spec/controllers/internal_users_controller_spec.rb
Jess Lee 5e4508ebe1 Remove callbacks from banisher + specs! (#1501)
* wip remove callbacks from banisher

* remove pry
2019-01-09 15:12:38 -05:00

82 lines
2.8 KiB
Ruby

require "rails_helper"
RSpec.describe "internal/users", type: :request do
context "when banishing user" do
let(:user) { create(:user) }
let(:user2) { create(:user) }
let(:user3) { create(:user) }
let(:super_admin) { create(:user, :super_admin) }
let(:article) { create(:article, user: user) }
let(:article2) { create(:article, user: user2) }
before do
sign_in super_admin
user
user2
Delayed::Worker.delay_jobs = true
dependents_for_offending_user_article
offender_activity_on_other_content
end
after do
Delayed::Worker.delay_jobs = false
end
def banish_user
post "/internal/users/#{user.id}/banish"
Delayed::Worker.new(quiet: true).work_off
user.reload
end
def dependents_for_offending_user_article
# create user2 comment on offending user article
comment = create(:comment, commentable_type: "Article", commentable: article, user: user2)
# create user3 reaction to user2 comment
create(:reaction, reactable: comment, reactable_type: "Comment", user: user3)
# create user3 comment response to user2 comment
comment2 = create(:comment, commentable_type: "Article", commentable: article, user: user3, ancestry: comment.id)
# create user2 reaction to user3 comment response
create(:reaction, reactable: comment2, reactable_type: "Comment", user: user2)
# create user3 reaction to offending article
create(:reaction, reactable: article, reactable_type: "Article", user: user3, category: "like")
Delayed::Worker.new(quiet: false).work_off
end
def offender_activity_on_other_content
# offender reacts to user2 article
create(:reaction, reactable: article2, reactable_type: "Article", user: user)
# offender comments on user2 article
comment = create(:comment, commentable_type: "Article", commentable: article2, user: user)
# user3 reacts to offender comment
create(:reaction, reactable: comment, reactable_type: "Comment", user: user3)
Delayed::Worker.new(quiet: false).work_off
end
it "reassigns username and removes profile info" do
user.currently_hacking_on = "currently hackin on !!!!!!!!!!!!"
user.save
banish_user
expect(user.currently_hacking_on).to eq("")
expect(user.username).to include("spam_")
end
it "adds banned role" do
banish_user
expect(user.roles.last.name).to eq("banned")
expect(Note.count).to eq(1)
end
it "deletes user content" do
banish_user
expect(user.reactions.count).to eq(0)
expect(user.comments.count).to eq(0)
expect(user.articles.count).to eq(0)
end
it "removes all follow relationships" do
user.follow(user2)
banish_user
expect(user.follows.count).to eq(0)
end
end
end