discourse/spec/jobs/remove_banner_spec.rb

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

46 lines
1.4 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
RSpec.describe Jobs::RemoveBanner do
fab!(:topic) { Fabricate(:topic) }
fab!(:user) { topic.user }
context "when topic is not bannered until" do
it "doesnt enqueue a future job to remove it" do
expect do topic.make_banner!(user) end.not_to change { Jobs::RemoveBanner.jobs.size }
end
end
context "when topic is bannered until" do
context "when bannered_until is a valid date" do
it "enqueues a future job to remove it" do
bannered_until = 5.days.from_now
expect(topic.archetype).to eq(Archetype.default)
expect do topic.make_banner!(user, bannered_until.to_s) end.to change {
Jobs::RemoveBanner.jobs.size
}.by(1)
topic.reload
expect(topic.archetype).to eq(Archetype.banner)
job = Jobs::RemoveBanner.jobs[0]
expect(Time.at(job["at"])).to be_within_one_minute_of(bannered_until)
expect(job["args"][0]["topic_id"]).to eq(topic.id)
job["class"].constantize.new.perform(*job["args"])
topic.reload
expect(topic.archetype).to eq(Archetype.default)
end
end
context "when bannered_until is an invalid date" do
it "doesnt enqueue a future job to remove it" do
expect do
expect do topic.make_banner!(user, "xxx") end.to raise_error(Discourse::InvalidParameters)
end.not_to change { Jobs::RemoveBanner.jobs.size }
end
end
end
end