From c54f52a71d3f5281d164fe49d8e1e5e395d3b47d Mon Sep 17 00:00:00 2001 From: Dzmitry Plashchynski Date: Fri, 6 Mar 2015 23:41:03 +0200 Subject: [PATCH] Add Job#save to save job info to DB --- lib/crono/job.rb | 9 +++++++++ spec/job_spec.rb | 15 +++++++++++++++ spec/orm/active_record/crono_job_spec.rb | 4 ++-- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/lib/crono/job.rb b/lib/crono/job.rb index 807c758..d92a5e1 100644 --- a/lib/crono/job.rb +++ b/lib/crono/job.rb @@ -30,5 +30,14 @@ module Crono logger.info "Finished #{performer} in %.2f seconds" % (Time.now - last_performed_at) end end + + def save + model.update(last_performed_at: last_performed_at) + end + + private + def model + @model ||= Crono::CronoJob.find_or_create_by(job_id: job_id) + end end end diff --git a/spec/job_spec.rb b/spec/job_spec.rb index b785ae8..74ab0b9 100644 --- a/spec/job_spec.rb +++ b/spec/job_spec.rb @@ -25,4 +25,19 @@ describe Crono::Job do expect(job.description).to be_eql("Perform TestJob every 2 days") end end + + describe "#save" do + it "should save new job to DB" do + expect(Crono::CronoJob.where(job_id: job.job_id)).to_not exist + job.save + expect(Crono::CronoJob.where(job_id: job.job_id)).to exist + end + + it "should update saved job" do + job.last_performed_at = Time.now + job.save + @crono_job = Crono::CronoJob.find_by(job_id: job.job_id) + expect(@crono_job.last_performed_at).to be_eql(job.last_performed_at) + end + end end diff --git a/spec/orm/active_record/crono_job_spec.rb b/spec/orm/active_record/crono_job_spec.rb index 2a7a25a..0110588 100644 --- a/spec/orm/active_record/crono_job_spec.rb +++ b/spec/orm/active_record/crono_job_spec.rb @@ -8,7 +8,7 @@ CreateActiveAdminComments.up describe Crono::CronoJob do let(:valid_attrs) do { - job_id: "Perform TestJob every 2 days" + job_id: "Perform TestJob every 3 days" } end @@ -27,7 +27,7 @@ describe Crono::CronoJob do it "should save job_id to DB" do Crono::CronoJob.create!(valid_attrs) - @crono_job = Crono::CronoJob.where(job_id: valid_attrs[:job_id]).first + @crono_job = Crono::CronoJob.find_by(job_id: valid_attrs[:job_id]) expect(@crono_job).to be_present end end