mirror of
https://github.com/discourse/discourse.git
synced 2024-11-25 10:20:58 -06:00
FIX: Clean up topic_timers when no longer valid.
This was causing a bug where the jobs for the topic_timers will keep getting enqueued over and over again.
This commit is contained in:
parent
1e8f216e17
commit
5bca1aec48
@ -6,11 +6,12 @@ module Jobs
|
||||
topic_timer = TopicTimer.find_by(id: args[:topic_timer_id] || args[:topic_status_update_id])
|
||||
state = !!args[:state]
|
||||
|
||||
if topic_timer.blank? ||
|
||||
topic_timer.execute_at > Time.zone.now ||
|
||||
(topic = topic_timer.topic).blank? ||
|
||||
topic.closed == state
|
||||
if topic_timer.blank? || topic_timer.execute_at > Time.zone.now
|
||||
return
|
||||
end
|
||||
|
||||
if (topic = topic_timer.topic).blank? || topic.closed == state
|
||||
topic_timer.destroy!
|
||||
return
|
||||
end
|
||||
|
||||
|
@ -72,16 +72,33 @@ describe Jobs::ToggleTopicClosed do
|
||||
end
|
||||
end
|
||||
|
||||
describe 'when trying to close a topic that has already been closed' do
|
||||
it 'should delete the topic timer' do
|
||||
freeze_time(topic.public_topic_timer.execute_at + 1.minute)
|
||||
|
||||
topic.update!(closed: true)
|
||||
|
||||
expect do
|
||||
described_class.new.execute(
|
||||
topic_timer_id: topic.public_topic_timer.id,
|
||||
state: true
|
||||
)
|
||||
end.to change { TopicTimer.exists?(topic_id: topic.id) }.from(true).to(false)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'when trying to close a topic that has been deleted' do
|
||||
it 'should not do anything' do
|
||||
it 'should delete the topic timer' do
|
||||
freeze_time(topic.public_topic_timer.execute_at + 1.minute)
|
||||
|
||||
topic.trash!
|
||||
|
||||
Topic.any_instance.expects(:update_status).never
|
||||
|
||||
described_class.new.execute(
|
||||
topic_timer_id: topic.public_topic_timer.id,
|
||||
state: true
|
||||
)
|
||||
expect do
|
||||
described_class.new.execute(
|
||||
topic_timer_id: topic.public_topic_timer.id,
|
||||
state: true
|
||||
)
|
||||
end.to change { TopicTimer.exists?(topic_id: topic.id) }.from(true).to(false)
|
||||
end
|
||||
end
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user