test/functional/validatable_test.rb in validatable-1.6.4 vs test/functional/validatable_test.rb in validatable-1.6.6

- old
+ new

@@ -1,8 +1,46 @@ require File.expand_path(File.dirname(__FILE__) + '/../test_helper') functional_tests do + + expect "can't be empty" do + child_class = Module.new do + include Validatable + validates_presence_of :name + end + klass = Class.new do + include Validatable + include_validations_from :child + define_method :child do + child_class + end + attr_accessor :name + end + instance = klass.new + instance.valid? + instance.errors.on(:name) + end + + expect "can't be empty" do + child_class = Module.new do + include Validatable + validates_presence_of :name + end + klass = Class.new do + include Validatable + validates_presence_of :address + include_validations_from :child + define_method :child do + child_class + end + attr_accessor :name, :address + end + instance = klass.new + instance.valid? + instance.errors.on(:address) + end + expect :is_set do klass = Class.new do include Validatable attr_accessor :result before_validation do @@ -89,11 +127,11 @@ validates_presence_of :name validates_format_of :address, :with => /.+/ end klass = Class.new do include Validatable - include_validations_for :child + include_errors_from :child define_method :child do child_class.new end end instance = klass.new @@ -108,11 +146,11 @@ validates_presence_of :name validates_format_of :address, :with => /.+/ end klass = Class.new do include Validatable - include_validations_for :child + include_errors_from :child define_method :child do child_class.new end end instance = klass.new @@ -131,11 +169,11 @@ klass = Class.new do include Validatable extend Forwardable def_delegator :child, :name validates_true_for :name, :logic => lambda { false }, :level => 2, :message => "invalid message" - include_validations_for :child + include_errors_from :child define_method :child do @child ||= child_class.new end end instance = klass.new @@ -151,11 +189,11 @@ end klass = Class.new do include Validatable validates_true_for :address, :logic => lambda { false }, :level => 1, :message => "invalid message" - include_validations_for :child + include_errors_from :child define_method :child do @child ||= child_class.new end end @@ -171,11 +209,11 @@ attr_accessor :name, :address validates_presence_of :name end klass = Class.new do include Validatable - include_validations_for :child, :map => {:name => :namen} + include_errors_from :child, :map => {:name => :namen} define_method :child do child_class.new end end instance = klass.new @@ -189,11 +227,11 @@ attr_accessor :name, :address validates_presence_of :name end klass = Class.new do include Validatable - include_validations_for :child, :if => lambda { true } + include_errors_from :child, :if => lambda { true } define_method :child do child_class.new end end instance = klass.new @@ -207,11 +245,11 @@ attr_accessor :name, :address validates_presence_of :name end klass = Class.new do include Validatable - include_validations_for :child, :if => lambda { false } + include_errors_from :child, :if => lambda { false } define_method :child do child_class.new end end instance = klass.new @@ -352,8 +390,48 @@ validates_presence_of :address, :level => 2 attr_accessor :name, :address end instance = klass.new instance.valid? + instance.errors.on(:address) + end + + expect "Mod::Klass/Validatable::ValidatesPresenceOf/name" do + module Mod + class Klass + include Validatable + validates_presence_of :name + end + end + Mod::Klass.validations.first.key + end + + expect "/Validatable::ValidatesPresenceOf/custom key" do + klass = Class.new do + include Validatable + validates_presence_of :name, :key => "custom key" + end + klass.validations.first.key + end + + expect "can't be empty" do + klass = Class.new do + include Validatable + validates_presence_of :name, :address + attr_accessor :name, :address + end + instance = klass.new + instance.validate_only("presence_of/name") + instance.errors.on(:name) + end + + expect nil do + klass = Class.new do + include Validatable + validates_presence_of :name, :address + attr_accessor :name, :address + end + instance = klass.new + instance.validate_only("presence_of/name") instance.errors.on(:address) end end