Browse Source

Added tests for scheduler fields error_message and status.

Jens Pfeifer 7 years ago
parent
commit
80199a61b5
2 changed files with 43 additions and 0 deletions
  1. 25 0
      spec/factories/scheduler.rb
  2. 18 0
      spec/models/scheduler_spec.rb

+ 25 - 0
spec/factories/scheduler.rb

@@ -0,0 +1,25 @@
+FactoryGirl.define do
+  sequence :test_scheduler_name do |n|
+    "Testscheduler#{n}"
+  end
+end
+
+FactoryGirl.define do
+
+  factory :scheduler do
+    name          { generate(:test_scheduler_name) }
+    last_run      { Time.zone.now }
+    pid           1337
+    prio          1
+    status        'ok'
+    active        true
+    period        { 10.minutes }
+    running       false
+    note          'test'
+    updated_by_id 1
+    created_by_id 1
+    created_at    1
+    updated_at    1
+    add_attribute(:method) { 'test' }
+  end
+end

+ 18 - 0
spec/models/scheduler_spec.rb

@@ -26,6 +26,24 @@ RSpec.describe Scheduler do
     SpecSpace.send(:remove_const, :DelayedJobBackend)
   end
 
+  describe '._start_job' do
+
+    it 'sets error status/message for failed jobs' do
+      job = create(:scheduler)
+      described_class._start_job(job)
+      expect(job.status).to eq 'error'
+      expect(job.active).to be false
+      expect(job.error_message).to be_present
+    end
+
+    it 'executes job that is expected to succeed' do
+      expect(Setting).to receive(:reload)
+      job = create(:scheduler, method: 'Setting.reload')
+      described_class._start_job(job)
+      expect(job.status).to eq 'ok'
+    end
+  end
+
   describe '.cleanup' do
 
     it 'gets called by .threads' do