class ErgomentumRspec::Matchers::ActiveModel::BeValidFor

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_valid_for.rb, line 23
def self.name
  "SomeClass"
end
new(value) click to toggle source
# File lib/ergomentum_rspec/matchers/active_model/be_valid_for.rb, line 11
def initialize(value)
  @value = value
end

Public Instance Methods

description() click to toggle source
# File lib/ergomentum_rspec/matchers/active_model/be_valid_for.rb, line 37
def description
  "'#{@value}' be an valid value"
end
failure_message() click to toggle source
# File lib/ergomentum_rspec/matchers/active_model/be_valid_for.rb, line 33
def failure_message
  "expect '#{@value}' to be valid"
end
matches?(validator) click to toggle source
# File lib/ergomentum_rspec/matchers/active_model/be_valid_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)
  model.valid? && model.errors.empty?
end