diff --git a/Gemfile.lock b/Gemfile.lock index 5e34024..9ef555b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -3,6 +3,7 @@ PATH specs: crono (0.5.2) activejob (~> 4.0) + activerecord (~> 4.0) activesupport (~> 4.0) GEM @@ -11,12 +12,21 @@ GEM activejob (4.2.0) activesupport (= 4.2.0) globalid (>= 0.3.0) + activemodel (4.2.0) + activesupport (= 4.2.0) + builder (~> 3.1) + activerecord (4.2.0) + activemodel (= 4.2.0) + activesupport (= 4.2.0) + arel (~> 6.0) activesupport (4.2.0) i18n (~> 0.7) json (~> 1.7, >= 1.7.7) minitest (~> 5.1) thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) + arel (6.0.0) + builder (3.2.2) diff-lcs (1.2.5) globalid (0.3.3) activesupport (>= 4.1.0) @@ -37,6 +47,7 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.2.0) rspec-support (3.2.2) + sqlite3 (1.3.10) thread_safe (0.3.4) timecop (0.7.3) tzinfo (1.2.2) @@ -50,4 +61,5 @@ DEPENDENCIES crono! rake (~> 10.0) rspec (~> 3.0) + sqlite3 timecop (~> 0.7) diff --git a/crono.gemspec b/crono.gemspec index 7c8db0b..0bf3a14 100644 --- a/crono.gemspec +++ b/crono.gemspec @@ -15,10 +15,12 @@ Gem::Specification.new do |s| s.add_runtime_dependency "activejob", "~> 4.0" s.add_runtime_dependency "activesupport", "~> 4.0" + s.add_runtime_dependency "activerecord", "~> 4.0" s.add_development_dependency "rake", "~> 10.0" s.add_development_dependency "bundler", ">= 1.0.0" s.add_development_dependency "rspec", "~> 3.0" s.add_development_dependency "timecop", "~> 0.7" + s.add_development_dependency "sqlite3" s.files = `git ls-files`.split("\n") s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact diff --git a/lib/crono.rb b/lib/crono.rb index 0b0a05e..253e69a 100644 --- a/lib/crono.rb +++ b/lib/crono.rb @@ -9,3 +9,4 @@ require "crono/job.rb" require "crono/scheduler.rb" require "crono/config.rb" require "crono/performer_proxy.rb" +require "crono/orm/active_record/crono_job.rb" diff --git a/lib/crono/orm/active_record/crono_job.rb b/lib/crono/orm/active_record/crono_job.rb new file mode 100644 index 0000000..a44e43d --- /dev/null +++ b/lib/crono/orm/active_record/crono_job.rb @@ -0,0 +1,8 @@ +require 'active_record' + +module Crono + class CronoJob < ActiveRecord::Base + self.table_name = "crono_jobs" + validates :job_id, presence: true + end +end diff --git a/spec/orm/active_record/crono_job_spec.rb b/spec/orm/active_record/crono_job_spec.rb new file mode 100644 index 0000000..40b1b8e --- /dev/null +++ b/spec/orm/active_record/crono_job_spec.rb @@ -0,0 +1,25 @@ +require "spec_helper" +require "generators/crono/install/templates/migrations/create_crono_jobs.rb" + +ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:') +ActiveRecord::Base.logger = Logger.new(STDOUT) +CreateActiveAdminComments.up + +describe Crono::CronoJob do + let(:valid_attrs) do + { + job_id: "Perform TestJob every 2 days" + } + end + + it "should validate presence of job_id" do + @crono_job = Crono::CronoJob.new() + expect(@crono_job).not_to be_valid + end + + 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 + expect(@crono_job).to be_present + end +end