From a932efbb8d6d2788f229f63fc5a95882ed212e4a Mon Sep 17 00:00:00 2001 From: Neel Shah Date: Thu, 23 Nov 2023 14:01:07 +0100 Subject: [PATCH] Fix sidekiq-cron job patch return --- sentry-sidekiq/lib/sentry/sidekiq/cron/job.rb | 2 ++ .../spec/sentry/sidekiq/cron/job_spec.rb | 27 ++++++++++++++----- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/sentry-sidekiq/lib/sentry/sidekiq/cron/job.rb b/sentry-sidekiq/lib/sentry/sidekiq/cron/job.rb index 87a108899..4098d7564 100644 --- a/sentry-sidekiq/lib/sentry/sidekiq/cron/job.rb +++ b/sentry-sidekiq/lib/sentry/sidekiq/cron/job.rb @@ -31,6 +31,8 @@ def save slug: name, monitor_config: Sentry::Cron::MonitorConfig.from_crontab(cron)) end + + true end end end diff --git a/sentry-sidekiq/spec/sentry/sidekiq/cron/job_spec.rb b/sentry-sidekiq/spec/sentry/sidekiq/cron/job_spec.rb index 2496cb3b8..ad8f19967 100644 --- a/sentry-sidekiq/spec/sentry/sidekiq/cron/job_spec.rb +++ b/sentry-sidekiq/spec/sentry/sidekiq/cron/job_spec.rb @@ -16,10 +16,30 @@ Sidekiq::Cron::Job.load_from_hash!(schedule) end + before do + stub_const('Job', Class.new { def perform; end }) + end + it 'patches class' do expect(Sidekiq::Cron::Job.ancestors).to include(described_class) end + it 'preserves return value' do + job = Sidekiq::Cron::Job.new(name: 'test', cron: '* * * * *', class: 'Job') + expect(job.save).to eq(true) + end + + it 'preserves return value in invalid case' do + job = Sidekiq::Cron::Job.new(name: 'test', cron: 'not a crontab', class: 'Job') + expect(job.save).to eq(false) + end + + it 'does not raise error on invalid class' do + expect do + Sidekiq::Cron::Job.create(name: 'invalid_class', cron: '* * * * *', class: 'UndefinedClass') + end.not_to raise_error + end + it 'patches HappyWorker' do expect(HappyWorkerDup.ancestors).to include(Sentry::Cron::MonitorCheckIns) expect(HappyWorkerDup.sentry_monitor_slug).to eq('happy') @@ -39,11 +59,4 @@ it 'does not patch ReportingWorker because of invalid schedule' do expect(ReportingWorker.ancestors).not_to include(Sentry::Cron::MonitorSchedule) end - - it 'does not raise error on invalid class' do - expect do - Sidekiq::Cron::Job.create(name: 'invalid_class', cron: '* * * * *', class: 'UndefinedClass') - end.not_to raise_error - end - end