class RSpec::Matchers::DSL::Matcher
Public Class Methods
chain_value(value, &actual_definition)
click to toggle source
# File lib/attribute_matcher/ext/rspec/chain_value.rb, line 7 def chain_value(value, &actual_definition) attr_accessor :chained_values, :"expected_#{value}", :"expected_#{value}_set" create_chain_method(value) create_all_values_match_method create_value_match_method(value, actual_definition) end
failure_messages(&block)
click to toggle source
Calls superclass method
# File lib/attribute_matcher/ext/rspec/failure_messages.rb, line 7 def failure_messages(&block) define_method :failure_message do failures = instance_eval(&block).compact.join(' and ') [super(), failures].reject(&:empty?).join(' but ') end end
Private Class Methods
create_all_values_match_method()
click to toggle source
# File lib/attribute_matcher/ext/rspec/chain_value.rb, line 27 def create_all_values_match_method return if instance_methods(false).include?(:values_match?) define_method(:all_values_match?) do chained_values.nil? || chained_values.map { |m| send(m) }.all? end end
create_chain_method(value)
click to toggle source
# File lib/attribute_matcher/ext/rspec/chain_value.rb, line 17 def create_chain_method(value) chain(value) do |expected_value = true| self.chained_values ||= [] chained_values << :"#{value}_match?" send(:"expected_#{value}=", expected_value) send(:"expected_#{value}_set=", true) end end
create_value_match_method(value, actual_definition)
click to toggle source
# File lib/attribute_matcher/ext/rspec/chain_value.rb, line 35 def create_value_match_method(value, actual_definition) define_method :"#{value}_match?" do send(:"expected_#{value}_set").nil? || send(:"expected_#{value}").eql?(instance_exec(send(:"expected_#{value}"), &actual_definition)) end end