class SunspotMatchersTestunit::BaseMatcher
Attributes
args[RW]
Public Class Methods
new(session, args)
click to toggle source
# File lib/sunspot_matchers_testunit/matchers.rb, line 7 def initialize(session, args) @session = session @args = args build_comparison_search end
Public Instance Methods
actual_params()
click to toggle source
# File lib/sunspot_matchers_testunit/matchers.rb, line 49 def actual_params @actual_params ||= query_params_for_search(actual_search) end
actual_search()
click to toggle source
# File lib/sunspot_matchers_testunit/matchers.rb, line 29 def actual_search search_tuple.last end
build_comparison_search()
click to toggle source
# File lib/sunspot_matchers_testunit/matchers.rb, line 13 def build_comparison_search @comparison_search = if(@args.last.is_a?(Proc)) SunspotMatchersTestunit::SunspotSessionSpy.new(@session).build_search(search_types, &args.last) else SunspotMatchersTestunit::SunspotSessionSpy.new(@session).build_search(search_types) do send(search_method, *args) end end end
compare_key(key)
click to toggle source
# File lib/sunspot_matchers_testunit/matchers.rb, line 82 def compare_key(key) if(actual_params[key].is_a?(Array) || comparison_params[key].is_a?(Array)) compare_multi_value(actual_params[key], comparison_params[key]) else compare_single_value(actual_params[key], comparison_matcher_for_key(key)) end end
compare_multi_value(actual, comparison)
click to toggle source
# File lib/sunspot_matchers_testunit/matchers.rb, line 107 def compare_multi_value(actual, comparison) filter_values(comparison).reject do |value| next false unless actual value_matcher = Regexp.new(Regexp.escape(value)) actual.any?{ |actual_value| actual_value =~ value_matcher } end end
compare_single_value(actual, comparison)
click to toggle source
# File lib/sunspot_matchers_testunit/matchers.rb, line 98 def compare_single_value(actual, comparison) if comparison.is_a?(Regexp) return [] if comparison =~ actual return [comparison.source] end return [comparison] unless actual == comparison [] end
comparison_matcher_for_key(key)
click to toggle source
# File lib/sunspot_matchers_testunit/matchers.rb, line 90 def comparison_matcher_for_key(key) if wildcard? && wildcard_matcher_for_keys.has_key?(key) wildcard_matcher_for_keys[key] else comparison_params[key] end end
comparison_params()
click to toggle source
# File lib/sunspot_matchers_testunit/matchers.rb, line 53 def comparison_params @comparison_params ||= query_params_for_search(@comparison_search) end
differences()
click to toggle source
# File lib/sunspot_matchers_testunit/matchers.rb, line 74 def differences keys_to_compare.inject({}) do |hsh, key| result = compare_key(key) hsh[key] = result unless result.empty? hsh end end
field()
click to toggle source
# File lib/sunspot_matchers_testunit/matchers.rb, line 41 def field @args && @args.first end
filter_values(values)
click to toggle source
# File lib/sunspot_matchers_testunit/matchers.rb, line 115 def filter_values(values) return values unless wildcard? field_matcher = Regexp.new(field.to_s) values.select{ |value| field_matcher =~ value }.collect{|value| value.gsub(/:.*/, '')} end
match?()
click to toggle source
# File lib/sunspot_matchers_testunit/matchers.rb, line 57 def match? differences.empty? end
missing_param_error_message()
click to toggle source
# File lib/sunspot_matchers_testunit/matchers.rb, line 61 def missing_param_error_message missing_params = differences actual_values = missing_params.keys.collect {|key| "#{key} => #{actual_params[key]}"} missing_values = missing_params.collect{ |key, value| "#{key} => #{value}"} "expected search params: #{actual_values.join(' and ')} to match expected: #{missing_values.join(' and ')}" end
query_params_for_search(search)
click to toggle source
# File lib/sunspot_matchers_testunit/matchers.rb, line 45 def query_params_for_search(search) search.instance_variable_get(:@query).to_params end
search_tuple()
click to toggle source
# File lib/sunspot_matchers_testunit/matchers.rb, line 23 def search_tuple search_tuple = @session.is_a?(Array) ? @session : @session.searches.last raise 'no search found' unless search_tuple search_tuple end
search_types()
click to toggle source
# File lib/sunspot_matchers_testunit/matchers.rb, line 33 def search_types search_tuple.first end
unexpected_match_error_message()
click to toggle source
# File lib/sunspot_matchers_testunit/matchers.rb, line 68 def unexpected_match_error_message actual_values = keys_to_compare.collect {|key| "#{key} => #{actual_params[key]}"} comparison_values = keys_to_compare.collect {|key| "#{key} => #{comparison_params[key]}"} "expected search params: #{actual_values.join(' and ')} NOT to match expected: #{comparison_values.join(' and ')}" end
wildcard?()
click to toggle source
# File lib/sunspot_matchers_testunit/matchers.rb, line 37 def wildcard? @args && @args.last == any_param end
wildcard_matcher_for_keys()
click to toggle source
# File lib/sunspot_matchers_testunit/matchers.rb, line 121 def wildcard_matcher_for_keys {} end