mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
DEV: adds support for bannered until (#13417)
ATM it only implements server side of it, as my need is for automation purposes. However it should probably be added in the UI too as it's unexpected to have pinned_until and no bannered_until.
This commit is contained in:
51
spec/jobs/remove_banner_spec.rb
Normal file
51
spec/jobs/remove_banner_spec.rb
Normal file
@@ -0,0 +1,51 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Jobs::RemoveBanner do
|
||||
fab!(:topic) { Fabricate(:topic) }
|
||||
fab!(:user) { topic.user }
|
||||
|
||||
context 'topic is not bannered until' do
|
||||
it 'doesn’t enqueue a future job to remove it' do
|
||||
expect do
|
||||
topic.make_banner!(user)
|
||||
end.to change { Jobs::RemoveBanner.jobs.size }.by(0)
|
||||
end
|
||||
end
|
||||
|
||||
context 'topic is bannered until' do
|
||||
context '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 'bannered_until is an invalid date' do
|
||||
it 'doesn’t enqueue a future job to remove it' do
|
||||
expect do
|
||||
expect do
|
||||
topic.make_banner!(user, 'xxx')
|
||||
end.to raise_error(Discourse::InvalidParameters)
|
||||
end.to change { Jobs::RemoveBanner.jobs.size }.by(0)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user