Sha256: 31d0c7f442d7220534286a2911eb1b24b25e70d35aef13f0d91c2cbd59e167fe

Contents?: true

Size: 1.9 KB

Versions: 2

Compression:

Stored size: 1.9 KB

Contents

require 'helper'

setup_mongoid

class MongoUser
  include Mongoid::Document
  include HasConstant
  include HasConstant::Orm::Mongoid

  field :salutation, :type => Integer

  has_constant :salutations, ['Mr', 'Mrs']
end if defined?(Mongoid)

class MongoUserWithProc
  include Mongoid::Document
  include HasConstant
  include HasConstant::Orm::Mongoid

  field :salutation, :type => Integer

  has_constant :salutations, lambda { ['Mr', 'Mrs'] }
end if defined?(Mongoid)

class MongoidTest < Test::Unit::TestCase
  context 'Instance' do
    should 'save values as integers' do
      m = MongoUser.new(:salutation => 'Mr')
      m.save!
      assert_equal 'Mr', m.salutation
      assert_equal 0, m.attributes['salutation']
    end

    should 'not be valid when an incorrect value is supplied' do
      m = MongoUser.new(:salutation => 'asefe')
      assert !m.valid?
      assert_equal ['must be one of Mr, Mrs'], m.errors[:salutation]
    end

    should 'not be valid with an incorrect value is supplied and a proc/lambda has been used' do
      m = MongoUserWithProc.new(:salutation => 'asefe')
      assert !m.valid?
      assert_equal ['must be one of Mr, Mrs'], m.errors[:salutation]
    end
  end

  context 'Named Scopes' do
    setup do
      @man = MongoUser.create!(:salutation => 'Mr')
      @woman = MongoUser.create!(:salutation => 'Mrs')
    end

    should 'provide by_constant scope' do
      assert_equal 1, MongoUser.by_constant('salutation', 'Mr').count
      assert_equal @man, MongoUser.by_constant('salutation', 'Mr').first
    end

    should 'provide singular_is scope' do
      assert_equal 1, MongoUser.salutation_is('Mr').count
      assert_equal @man, MongoUser.salutation_is('Mr').first
    end

    should 'provide singular_is_not scope' do
      assert_equal 1, MongoUser.salutation_is_not('Mr').count
      assert_equal @woman, MongoUser.salutation_is_not('Mr').first
    end
  end
end if defined?(Mongoid)

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
has_constant-0.2.5 test/unit/orm/mongoid_test.rb
has_constant-0.2.4 test/unit/orm/mongoid_test.rb