From bbb16cb0936ef4ee06f49b96896518de4a6e6945 Mon Sep 17 00:00:00 2001 From: Adam Meehan Date: Mon, 15 Oct 2012 20:32:51 +1100 Subject: [PATCH] Mongoid 3.0 appraisal and failing specs --- Appraisals | 4 ++ Gemfile | 3 +- gemfiles/mongoid_3_0.gemfile | 16 +++++ gemfiles/mongoid_3_1.gemfile | 16 +++++ spec/support/mongoid.yml | 6 ++ spec/validates_timeliness/orm/mongoid_spec.rb | 60 ++++++++++++++++--- 6 files changed, 96 insertions(+), 9 deletions(-) create mode 100644 gemfiles/mongoid_3_0.gemfile create mode 100644 gemfiles/mongoid_3_1.gemfile create mode 100644 spec/support/mongoid.yml diff --git a/Appraisals b/Appraisals index 55f6d2f..30997e1 100644 --- a/Appraisals +++ b/Appraisals @@ -25,3 +25,7 @@ end appraise "mongoid_2_4" do gem "mongoid", "~> 2.4.0" end + +appraise "mongoid_3_0" do + gem "mongoid", "~> 3.0.0" +end diff --git a/Gemfile b/Gemfile index fca8822..411482d 100644 --- a/Gemfile +++ b/Gemfile @@ -13,7 +13,8 @@ gem 'appraisal' gem 'sqlite3' group :mongoid do - gem 'mongoid', '~> 2.3.0' + gem 'mongoid', '~> 3.0.0' + gem 'mongo' gem 'bson_ext' gem 'system_timer', :platforms => [:ruby_18] end diff --git a/gemfiles/mongoid_3_0.gemfile b/gemfiles/mongoid_3_0.gemfile new file mode 100644 index 0000000..bf8752b --- /dev/null +++ b/gemfiles/mongoid_3_0.gemfile @@ -0,0 +1,16 @@ +# This file was generated by Appraisal + +source "http://rubygems.org" + +gem "rails", "~> 3.2.6" +gem "rspec", "~> 2.8" +gem "rspec-rails", "~> 2.8" +gem "timecop" +gem "rspec_tag_matchers" +gem "ruby-debug", :platforms=>[:ruby_18, :jruby] +gem "debugger", :platforms=>[:ruby_19] +gem "appraisal" +gem "sqlite3" +gem "mongoid", "~> 3.0.0" + +gemspec :path=>"../" \ No newline at end of file diff --git a/gemfiles/mongoid_3_1.gemfile b/gemfiles/mongoid_3_1.gemfile new file mode 100644 index 0000000..0f130f3 --- /dev/null +++ b/gemfiles/mongoid_3_1.gemfile @@ -0,0 +1,16 @@ +# This file was generated by Appraisal + +source "http://rubygems.org" + +gem "rails", "~> 3.2.6" +gem "rspec", "~> 2.8" +gem "rspec-rails", "~> 2.8" +gem "timecop" +gem "rspec_tag_matchers" +gem "ruby-debug", :platforms=>[:ruby_18, :jruby] +gem "debugger", :platforms=>[:ruby_19] +gem "appraisal" +gem "sqlite3" +gem "mongoid", "~> 3.1.0" + +gemspec :path=>"../" \ No newline at end of file diff --git a/spec/support/mongoid.yml b/spec/support/mongoid.yml new file mode 100644 index 0000000..60108a0 --- /dev/null +++ b/spec/support/mongoid.yml @@ -0,0 +1,6 @@ +test: + sessions: + default: + database: mongoid + hosts: + - localhost:27017 diff --git a/spec/validates_timeliness/orm/mongoid_spec.rb b/spec/validates_timeliness/orm/mongoid_spec.rb index 59bb491..b726ca6 100644 --- a/spec/validates_timeliness/orm/mongoid_spec.rb +++ b/spec/validates_timeliness/orm/mongoid_spec.rb @@ -4,13 +4,19 @@ require 'spec_helper' begin require 'mongoid' +require 'mongoid/version' require 'validates_timeliness/orm/mongoid' -Mongoid.configure do |config| - name = "validates_timeliness_test" - host = "localhost" - config.master = Mongo::Connection.new.db(name) - config.persist_in_safe_mode = false +if Mongoid::VERSION >= '3.0' + Mongoid.load!("spec/support/mongoid.yml", :test) +else + require 'mongo' + Mongoid.configure do |config| + name = "validates_timeliness_test" + host = "localhost" + config.master = Mongo::Connection.new.db(name) + config.persist_in_safe_mode = false + end end describe ValidatesTimeliness, 'Mongoid' do @@ -47,9 +53,19 @@ describe ValidatesTimeliness, 'Mongoid' do record.errors[:publish_date].should be_empty end - it "should validate a invalid value string" do + it "should validate an invalid time value string" do begin - record.publish_date = 'not a date' + record.publish_time = 'not valid' + rescue + end + + record.valid? + record.errors[:publish_time].should_not be_empty + end + + it "should validate an invalid date value string" do + begin + record.publish_date = 'not valid' rescue end @@ -57,12 +73,36 @@ describe ValidatesTimeliness, 'Mongoid' do record.errors[:publish_date].should_not be_empty end - it "should validate a nil value" do + it "should validate an invalid datetime value string" do + begin + record.publish_datetime = 'not valid' + rescue + end + + record.valid? + record.errors[:publish_datetime].should_not be_empty + end + + it "should accept a nil time value" do + record.publish_date = nil + + record.valid? + record.errors[:publish_time].should be_empty + end + + it "should accept a nil date value" do record.publish_date = nil record.valid? record.errors[:publish_date].should be_empty end + + it "should accept a nil datetime value" do + record.publish_datetime = nil + + record.valid? + record.errors[:publish_datetime].should be_empty + end end it 'should determine type for attribute' do @@ -105,6 +145,8 @@ describe ValidatesTimeliness, 'Mongoid' do Timeliness::Parser.should_receive(:parse) record.publish_date = 'not valid' + + record.publish_date.should be_nil end it 'should store a Date value after parsing string' do @@ -149,6 +191,8 @@ describe ValidatesTimeliness, 'Mongoid' do Timeliness::Parser.should_receive(:parse) record.publish_datetime = 'not valid' + + record.publish_datetime.should be_nil end it 'should parse string into DateTime value' do