docbrown/spec/services/moderator/sink_articles_spec.rb
Andy Zhao acd3b92b32
Add sink user service and specs for mass vomits (#6006)
* Add sink user service and specs for mass vomits

* Use new score calculation

* Lower articles' scores instead and make async

* Add lower score functionality to controllers

* Remove unused variable

* Use correct var and add missing arg

* Remove unused status

* Add composite index for reactable_type and ID

* Use alias instead of additional boolean

* Use medium priority for sink worker

* Log to honeybadger and not logs

* Log the error and not a string
2020-02-17 10:29:50 -05:00

31 lines
982 B
Ruby

require "rails_helper"
RSpec.describe Moderator::SinkArticles, type: :service do
let(:moderator) { create(:user, :trusted) }
let(:spam_user) do
user = create(:user)
create_list(:article, 3, user: user)
user
end
let(:vomit_reaction) { create(:reaction, reactable: spam_user, user: moderator, category: "vomit") }
describe "#call" do
it "lowers all of a user's articles' scores by 25 each if not confirmed" do
vomit_reaction
expect do
sidekiq_perform_enqueued_jobs do
described_class.call(spam_user.id)
end
end.to change { spam_user.articles.sum(:score) }.from(0).to(-75)
end
it "lowers all of the user's articles' scores by 50 each if confirmed" do
vomit_reaction.update(status: "confirmed")
expect do
sidekiq_perform_enqueued_jobs do
described_class.call(spam_user.id)
end
end.to change { spam_user.articles.sum(:score) }.from(0).to(-150)
end
end
end