From eaa3350b778a583be4be0692948602a0b72f95e7 Mon Sep 17 00:00:00 2001 From: Colin Darie Date: Wed, 23 Oct 2024 17:05:27 +0200 Subject: [PATCH] feat(contact): delete contact forms when max attempts has been reached --- app/jobs/helpscout_create_conversation_job.rb | 4 ++++ .../helpscout_create_conversation_job_spec.rb | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/app/jobs/helpscout_create_conversation_job.rb b/app/jobs/helpscout_create_conversation_job.rb index b7f59c043..8239898c7 100644 --- a/app/jobs/helpscout_create_conversation_job.rb +++ b/app/jobs/helpscout_create_conversation_job.rb @@ -25,6 +25,10 @@ class HelpscoutCreateConversationJob < ApplicationJob create_conversation contact_form.delete + rescue StandardError + contact_form.delete if executions >= max_attempts + + raise end private diff --git a/spec/jobs/helpscout_create_conversation_job_spec.rb b/spec/jobs/helpscout_create_conversation_job_spec.rb index 2ed841cb0..d94609731 100644 --- a/spec/jobs/helpscout_create_conversation_job_spec.rb +++ b/spec/jobs/helpscout_create_conversation_job_spec.rb @@ -110,5 +110,21 @@ RSpec.describe HelpscoutCreateConversationJob, type: :job do end end end + + context 'when max attempts are reached' do + before do + allow(api).to receive(:create_conversation).and_raise(StandardError) + allow_any_instance_of(described_class).to receive(:executions).and_return(described_class.new.max_attempts) + end + + it 'deletes the contact form' do + expect { subject }.to raise_error(StandardError) + expect(contact_form).to be_destroyed + end + + it 'does not enqueue the job again' do + expect { subject rescue nil }.not_to have_enqueued_job(described_class) + end + end end end