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