$: << '../lib' require 'test/unit' require 'rubygems' require 'activerecord' require '../init' ActiveRecord::Base.establish_connection(:database => "test.sqlite3", :adapter => "sqlite3") class Thing < ActiveRecord::Base validates_size_of :name, :minimum => 3 validates_numericality_of :priority end class SingletonValidationsTest < Test::Unit::TestCase def test_override_of_validates_size_of t = Thing.new(:name => 'abc', :priority => 10) assert(t.save) t.validates_size_of :name, :minimum => 5, :message => "short" assert(!t.save) assert(t.errors.entries.include?(["name", "short"])) end def test_override_of_validates_numericality_of t = Thing.new(:name => 'abcde', :priority => 10.1) assert(t.save) t.validates_numericality_of :priority, :only_integer => true, :message => "non-integer" assert(!t.valid?) assert(t.errors.entries.include?(["priority", "non-integer"])) end def test_on_create t = Thing.new(:name => 'abcde', :priority => 10) assert(t.valid?) t.validates_format_of :name, :with => /\d/, :on => :create assert(!t.save) assert(t.errors.entries.include?(["name", "is invalid"])) end def test_on_update t = Thing.new(:name => 'abcde', :priority => 10) assert(t.valid?) t.validates_format_of :name, :with => /\d/, :on => :update assert(t.save) assert(!t.save) assert(t.errors.entries.include?(["name", "is invalid"])) end def test_method_missing assert_raises(NoMethodError) { Thing.new.validates_blah } end end