Prior to this commit, we may have left lingering podcast entries that required manual cleanup. As a bonus, I also added deleting podcasts when we delete users. Closes forem/forem#18041 In addition I adjusted rubocop to not complain about the require method call ``` spec/services/users/delete_spec.rb:1:1: C: \ Style/TopLevelMethodDefinition: \ Do not define methods at the top-level. \ (https://rubystyle.guide#top-level-methods) require "rails_helper" ^^^^^^^^^^^^^^^^^^^^^^ ```
74 lines
2.3 KiB
Ruby
74 lines
2.3 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 "removes all their podcasts" do
|
|
podcast = create(:podcast, creator: user)
|
|
create(:podcast_ownership, owner: user, podcast: podcast)
|
|
expect do
|
|
sidekiq_perform_enqueued_jobs do
|
|
described_class.call(user: user, admin: admin)
|
|
end
|
|
end.to change(Podcast, :count).by(-1)
|
|
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
|