class ErgomentumRspec::Matchers::ActiveModel::BeInvalidFor
Public Class Methods
name()
click to toggle source
ActiveModel
sometimes needs a non nil class name. Because we are using an anonymous class, which have no name by default, we have to override the name method.
# File lib/ergomentum_rspec/matchers/active_model/be_invalid_for.rb, line 23 def self.name "SomeClass" end
new(value)
click to toggle source
# File lib/ergomentum_rspec/matchers/active_model/be_invalid_for.rb, line 11 def initialize(value) @value = value end
Public Instance Methods
and_add_error(expected_error_message)
click to toggle source
# File lib/ergomentum_rspec/matchers/active_model/be_invalid_for.rb, line 42 def and_add_error(expected_error_message) @expected_error_message = expected_error_message self end
description()
click to toggle source
# File lib/ergomentum_rspec/matchers/active_model/be_invalid_for.rb, line 51 def description "'#{@value}' be a invalid value" end
failure_message()
click to toggle source
# File lib/ergomentum_rspec/matchers/active_model/be_invalid_for.rb, line 47 def failure_message @message end
matches?(validator)
click to toggle source
# File lib/ergomentum_rspec/matchers/active_model/be_invalid_for.rb, line 15 def matches?(validator) model = Class.new do include ::ActiveModel::Model include ::ActiveModel::Attributes # ActiveModel sometimes needs a non nil class name. # Because we are using an anonymous class, which have no name by default, we have to override the name # method. def self.name "SomeClass" end attribute :some_attribute validates :some_attribute, validator end.new(some_attribute: @value) if model.valid? @message = "expecting '#{@value}' to be invalid" false elsif model.errors.messages[:some_attribute].include?(@expected_error_message) true else @message = "expecting error message '#{@expected_error_message}' for invalid value '#{@value}' but got "\ "'#{model.errors.messages[:some_attribute].join(', ')}'" false end end