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])
|
topic_timer = TopicTimer.find_by(id: args[:topic_timer_id] || args[:topic_status_update_id])
|
||||||
state = !!args[:state]
|
state = !!args[:state]
|
||||||
|
|
||||||
if topic_timer.blank? ||
|
if topic_timer.blank? || topic_timer.execute_at > Time.zone.now
|
||||||
topic_timer.execute_at > Time.zone.now ||
|
return
|
||||||
(topic = topic_timer.topic).blank? ||
|
end
|
||||||
topic.closed == state
|
|
||||||
|
|
||||||
|
if (topic = topic_timer.topic).blank? || topic.closed == state
|
||||||
|
topic_timer.destroy!
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -72,16 +72,33 @@ describe Jobs::ToggleTopicClosed do
|
||||||
end
|
end
|
||||||
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
|
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.trash!
|
||||||
|
|
||||||
Topic.any_instance.expects(:update_status).never
|
expect do
|
||||||
|
described_class.new.execute(
|
||||||
described_class.new.execute(
|
topic_timer_id: topic.public_topic_timer.id,
|
||||||
topic_timer_id: topic.public_topic_timer.id,
|
state: true
|
||||||
state: true
|
)
|
||||||
)
|
end.to change { TopicTimer.exists?(topic_id: topic.id) }.from(true).to(false)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue