class Shoulda::ActiveRecord::Matchers::AllowValueMatcher
:nodoc:
def description
def description "allow #{@attribute} to be set to #{@value.inspect}" end
def error_description
def error_description if @instance.errors.empty? "no errors" else "errors: #{pretty_error_messages(@instance)}" end end
def errors_match?
def errors_match? @instance.valid? @errors = @instance.errors.on(@attribute) @errors = [@errors] unless @errors.is_a?(Array) errors_match_regexp? || errors_match_string? end
def errors_match_regexp?
def errors_match_regexp? if Regexp === @expected_message @matched_error = @errors.detect { |e| e =~ @expected_message } !@matched_error.nil? else false end end
def errors_match_string?
def errors_match_string? if @errors.include?(@expected_message) @matched_error = @expected_message true else false end end
def expectation
def expectation "errors to include #{@expected_message.inspect} " << "when #{@attribute} is set to #{@value.inspect}" end
def failure_message
def failure_message "Did not expect #{expectation}, got error: #{@matched_error}" end
def for(attribute)
def for(attribute) @attribute = attribute self end
def initialize(value)
def initialize(value) @value = value end
def matches?(instance)
def matches?(instance) @instance = instance @expected_message ||= :invalid if Symbol === @expected_message @expected_message = default_error_message(@expected_message) end @instance.send("#{@attribute}=", @value) !errors_match? end
def negative_failure_message
def negative_failure_message "Expected #{expectation}, got #{error_description}" end
def with_message(message)
def with_message(message) @expected_message = message if message self end