docbrown/spec/services/moderator/banish_user_spec.rb
Andy Zhao 6335f9a7e9
Remove profile when banish (#15818)
* Clear profile when banishing user

* Add test for clearing profile when banishing

* Also clear any social usernames
2021-12-17 15:36:35 -05:00

64 lines
2 KiB
Ruby

require "rails_helper"
RSpec.describe Moderator::BanishUser, type: :service do
let(:user) { create(:user) }
let(:moderator) { create(:user, :trusted) }
let(:admin) { create(:user, :super_admin) }
it "updates the user's username" do
sidekiq_perform_enqueued_jobs do
described_class.call(user: user, admin: admin)
end
expect(user.username).to include "spam_"
end
it "clears their profile" do
sidekiq_perform_enqueued_jobs do
described_class.call(user: user, admin: admin)
end
expect(user.profile.summary).to be_blank
expect(user.profile.location).to be_blank
expect(user.profile.website_url).to be_blank
expect(user.profile.data).to be_empty
expect(user.github_username).to be_blank
expect(user.twitter_username).to be_blank
expect(user.facebook_username).to be_blank
end
it "removes all their articles" do
create(:article, user: user, published: true)
sidekiq_perform_enqueued_jobs
sidekiq_perform_enqueued_jobs do
described_class.call(user: user, admin: admin)
end
expect(user.articles.count).to eq 0
end
it "removes all their comments" do
article = create(:article, user: user, published: true)
create(:comment, user: user, commentable: article)
sidekiq_perform_enqueued_jobs
sidekiq_perform_enqueued_jobs do
described_class.call(user: user, admin: admin)
end
expect(user.comments.count).to eq 0
end
it "creates a BanishedUser record with their original username" do
original_username = user.username
sidekiq_perform_enqueued_jobs do
described_class.call(user: user, admin: admin)
end
expect(BanishedUser.exists?(username: original_username)).to be true
end
it "deletes existing vomit reactions on the banished user" do
create(:reaction, category: "vomit", reactable: user, user: moderator)
sidekiq_perform_enqueued_jobs do
described_class.call(user: user, admin: admin)
end
expect(Reaction.where(reactable: user).count).to eq 0
end
end