module Remarkable
module MongoMapper
module Matchers
class ValidateConfirmationOfMatcher < Remarkable::MongoMapper::Base #:nodoc:
arguments :collection => :attributes, :as => :attribute
optional :message
collection_assertions :responds_to_confirmation?, :confirms?
default_options :message => "doesn't match confirmation"
protected
def responds_to_confirmation?
@subject.respond_to?(:"#{@attribute}_confirmation=")
end
def confirms?
@subject.send(:"#{@attribute}_confirmation=", 'something')
bad?('different')
end
end
# Ensures that the model cannot be saved if one of the attributes is not confirmed.
#
# == Options
#
# * :message - value the test expects to find in errors.on(:attribute).
# Regexp, string or symbol. Default = "doesn't match confirmation"
#
# == Examples
#
# should_validate_confirmation_of :email, :password
#
# it { should validate_confirmation_of(:email, :password) }
#
def validate_confirmation_of(*attributes, &block)
ValidateConfirmationOfMatcher.new(*attributes, &block).spec(self)
end
end
end
end