Sha256: 638ebc6b7a975b50e73bd82cd0591c9413c043dedd7ae8d0e9f0e9bea8230932

Contents?: true

Size: 1.84 KB

Versions: 1

Compression:

Stored size: 1.84 KB

Contents

require 'spec_helper'

require 'mongoid'
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
end

describe ValidatesTimeliness, 'Mongoid' do

  class Article
    ::ValidatesTimeliness.use_plugin_parser = true
    include Mongoid::Document
    field :publish_date, :type => Date
    field :publish_time, :type => Time
    field :publish_datetime, :type => DateTime
    validates_date :publish_date
    validates_time :publish_time
    validates_datetime :publish_datetime
    ::ValidatesTimeliness.use_plugin_parser = false
  end

  it 'should define _timeliness_raw_value_for instance method' do
    Article.instance_methods.should include('_timeliness_raw_value_for')
  end
  
  context "attribute write method" do
    it 'should cache attribute raw value' do
      r = Article.new
      r.publish_datetime = date_string = '2010-01-01'
      r._timeliness_raw_value_for(:publish_datetime).should == date_string
    end

    context "with plugin parser" do
      before :all do
        ValidatesTimeliness.use_plugin_parser = true
      end

      it 'should parse a string value' do
        ValidatesTimeliness::Parser.should_receive(:parse) 
        r = Article.new
        r.publish_date = '2010-01-01'
      end

      it 'should parse string into Time value' do
        r = Article.new
        r.publish_datetime = '2010-01-01 12:00'
        r.publish_datetime.should == Time.utc(2010,1,1,12,0)
      end

      after :all do
        ValidatesTimeliness.use_plugin_parser = false
      end
    end
  end

  context "before_type_cast method" do
    it 'should not be defined if ORM does not support it' do
      Article.instance_methods(false).should_not include("birth_datetime_before_type_cast")
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
validates_timeliness-3.0.0.beta.3 spec/validates_timeliness/orm/mongoid_spec.rb