class Shoulda::Matchers::ActiveModel::Validator
@private
def all_formatted_validation_error_messages
def all_formatted_validation_error_messages format_validation_errors(all_validation_errors) end
def all_validation_errors
def all_validation_errors validation_result[:all_validation_errors] end
def call
def call !messages_match? && !captured_range_error? end
def captured_range_error?
def captured_range_error? !!@captured_range_error end
def captured_validation_exception?
def captured_validation_exception? @captured_validation_exception end
def expects_strict?
def expects_strict? @expects_strict end
def has_messages?
def has_messages? messages.any? end
def initialize(record, attribute, options = {})
def initialize(record, attribute, options = {}) @record = record @attribute = attribute @context = options[:context] @expects_strict = options[:expects_strict] @expected_message = options[:expected_message] @_validation_result = nil @captured_validation_exception = false @captured_range_error = false end
def matched_messages
def matched_messages if @expected_message messages.grep(@expected_message) else messages end end
def messages
def messages if expects_strict? [validation_exception_message] else validation_error_messages end end
def messages_match?
def messages_match? has_messages? && type_of_message_matched? && matched_messages.compact.any? end
def perform_validation
def perform_validation if context record.valid?(context) else record.valid? end all_validation_errors = record.errors.dup validation_error_messages = if record.errors.respond_to?(:[]) record.errors[attribute] else record.errors.on(attribute) end { all_validation_errors: all_validation_errors, validation_error_messages: validation_error_messages, validation_exception_message: nil } rescue ::ActiveModel::StrictValidationFailed => exception @captured_validation_exception = true { all_validation_errors: nil, validation_error_messages: [], validation_exception_message: exception.message } end
def type_of_message_matched?
def type_of_message_matched? expects_strict? == captured_validation_exception? end
def validation_error_messages
def validation_error_messages validation_result[:validation_error_messages] end
def validation_exception_message
def validation_exception_message validation_result[:validation_exception_message] end
def validation_result
def validation_result @_validation_result ||= perform_validation end