56 lines
1.4 KiB
Ruby
56 lines
1.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require "rails_helper"
|
|
|
|
describe QuestionWorker do
|
|
describe "#perform" do
|
|
let(:user) { FactoryBot.create(:user) }
|
|
let(:user_id) { user.id }
|
|
let(:question) { FactoryBot.create(:question, user: user) }
|
|
let(:question_id) { question.id }
|
|
|
|
before do
|
|
5.times do
|
|
other_user = FactoryBot.create(:user)
|
|
other_user.follow(user)
|
|
end
|
|
end
|
|
|
|
subject { described_class.new.perform(user_id, question_id) }
|
|
|
|
it "places the question in the inbox of the user's followers" do
|
|
expect { subject }
|
|
.to(
|
|
change { Inbox.where(user_id: user.followers.ids, question_id:, new: true).count }
|
|
.from(0)
|
|
.to(5)
|
|
)
|
|
end
|
|
|
|
it "respects mute rules" do
|
|
question.content = "Some spicy question text"
|
|
question.save
|
|
|
|
MuteRule.create(user_id: user.followers.first.id, muted_phrase: "spicy")
|
|
|
|
expect { subject }
|
|
.to(
|
|
change { Inbox.where(user_id: user.followers.ids, question_id:, new: true).count }
|
|
.from(0)
|
|
.to(4)
|
|
)
|
|
end
|
|
|
|
it "does not send questions to banned users" do
|
|
user.followers.first.ban
|
|
|
|
expect { subject }
|
|
.to(
|
|
change { Inbox.where(user_id: user.followers.ids, question_id:, new: true).count }
|
|
.from(0)
|
|
.to(4)
|
|
)
|
|
end
|
|
end
|
|
end
|