spec/jobs/cron_job_spec.rb in marty-9.5.1 vs spec/jobs/cron_job_spec.rb in marty-10.0.0

- old
+ new

@@ -5,24 +5,25 @@ let!(:schedule) do Marty::BackgroundJob::Schedule.create!( job_class: klass.name, cron: '* * * * *', - state: 'on' + state: 'on', + arguments: [] ).tap do |job| Marty::BackgroundJob::UpdateSchedule.call( id: job.id, - job_class: job.job_class + job_class: job.job_class, ) - dj = klass.delayed_job + dj = job.delayed_job dj.update!(run_at: 1.minute.ago) end end def run_job - expect(klass.delayed_job).to be_present + expect(schedule.delayed_job).to be_present expect(Delayed::Job.count).to eq 1 worker = Delayed::Worker.new worker.work_off end @@ -32,24 +33,24 @@ before do run_job end it 'job is recreated' do - expect(klass).to be_scheduled - expect(klass.delayed_job).to be_present + expect(klass.scheduled?(schedule_id: schedule.id)).to be true + expect(schedule.delayed_job).to be_present end end context 'schedule is off' do before do schedule.update!(state: :off) run_job end it 'job is not recreated' do - expect(klass).to_not be_scheduled - expect(klass.delayed_job).to_not be_present + expect(klass.scheduled?(schedule_id: schedule.id)).to be false + expect(schedule.reload.delayed_job).to_not be_present end end end describe 'after success' do @@ -57,12 +58,12 @@ allow(klass).to receive(:trigger_failure).and_return(nil) run_job end it 'job is not recreated' do - expect(klass).to_not be_scheduled - expect(klass.delayed_job).to_not be_present + expect(klass.scheduled?(schedule_id: schedule.id)).to be false + expect(schedule.reload.delayed_job).to_not be_present end end end describe 'logs' do @@ -73,19 +74,22 @@ it 'logs failure' do expect { run_job }.to change { Marty::BackgroundJob::Log.count }.by 1 log = Marty::BackgroundJob::Log.find_by(job_class: klass.name) expect(log.error).to be_present expect(log.failure?).to be true - expect(klass).to be_scheduled + expect(klass.scheduled?(schedule_id: schedule.id)).to be true end it 'logs success' do allow(klass).to receive(:trigger_failure).and_return(nil) expect { run_job }.to change { Marty::BackgroundJob::Log.count }.by 1 log = Marty::BackgroundJob::Log.find_by(job_class: klass.name) expect(log.error).to_not be_present expect(log.success?).to be true - expect(klass).to be_scheduled + expect(klass.scheduled?(schedule_id: schedule.id)).to be true + + dj = schedule.reload.delayed_job + expect(dj.schedule_id).to eq schedule.id end end end