$:.unshift(File.dirname(__FILE__) + '/../lib') RAILS_ROOT = File.dirname(__FILE__) require 'test/unit' require 'rubygems' require 'test/unit' require 'active_record' require "#{File.dirname(__FILE__)}/../init" require File.dirname(__FILE__) + '/models' ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + "/debug.log") class ValidatesWordCountTest < Test::Unit::TestCase def test_maximum ['', 'One', 'One Two', 'One Two Three'].each do |summary| assert Maximum.new(:summary => summary).valid? end max = Maximum.new(:summary => "One Two Three Four") assert !max.valid? assert_not_nil max.errors.on(:summary) assert_equal "should not have more than 3 words", max.errors.on(:summary) end def test_minimum ['', 'One', 'One Two'].each do |summary| min = Minimum.new(:summary => summary) assert !min.valid? assert_equal "should have more than 3 words", min.errors.on(:summary) end assert Minimum.new(:summary => 'One Two Three').valid? assert Minimum.new(:summary => 'One Two Three Four Five').valid? end def test_range ['', 'One', 'One Two'].each do |summary| r = IntRange.new(:summary => summary) assert !r.valid? assert_equal "word count should be between 3 and 5", r.errors.on(:summary) end ['One Two Three', 'One Two Three Four', 'One Two Three Four Five'].each do |summary| assert IntRange.new(:summary => summary).valid? end assert !IntRange.new(:summary => "Here is more than five words!").valid? end def test_range_excluded_end ['', 'One', 'One Two'].each do |summary| r = IntRangeExcludedEnd.new(:summary => summary) assert !r.valid? assert_equal "word count should be between 3 and 5", r.errors.on(:summary) end ['One Two Three', 'One Two Three Four'].each do |summary| assert IntRangeExcludedEnd.new(:summary => summary).valid? end ['One Two Three Four Five', 'Here is more than five words!'].each do |summary| r = IntRangeExcludedEnd.new(:summary => summary) assert !r.valid? assert_equal "word count should be between 3 and 5", r.errors.on(:summary) end end def test_overriden_message ['', 'One', 'One Two'].each do |summary| r = IntRangeIntRangeWithOverridenMessage.new(:summary => summary) assert !r.valid? assert_equal "Overriden message: 3/5", r.errors.on(:summary) end end end