@@ -329,25 +329,14 @@ def supports_block_expectations?
329329 module MatcherErrors
330330 def create_display_string ( max_key_length , key , left , right , show_values )
331331 diff_array = right - left
332- if diff_array . empty?
333- diff_array = left - right
334- end
332+ diff_array = left - right if diff_array . empty?
335333 "#{ key . rjust ( max_key_length , ' ' ) } – expected: #{ left } , got: #{ right } #{ "(difference: #{ diff_array } )" if show_values } "
336334 end
337335
338- # Show the difference between expected and actual values with one value
339- # per line. This is done by hand because as of this writing the author
340- # doesn't understand how RSpec does its nice hash diff printing.
341- def difference ( keys , show_values : false )
336+ def loop_through_keys ( keys , transformed_expected , show_values )
342337 max_key_length = keys . reduce ( 0 ) { |max , key | [ max , key . size ] . max }
343-
344- _expected = expected
345- if show_values
346- _expected = expected . transform_values { |v | v . is_a? ( Array ) ? v : [ v ] }
347- end
348-
349338 keys . map do |key |
350- left = _expected . fetch ( key , show_values ? [ ] : 0 )
339+ left = transformed_expected . fetch ( key , show_values ? [ ] : 0 )
351340 left = [ left ] unless left . is_a? ( Array ) || show_values
352341
353342 right = @query_stats . queries . fetch ( key , { } )
@@ -357,6 +346,18 @@ def difference(keys, show_values: false)
357346 end . compact
358347 end
359348
349+ # Show the difference between expected and actual values with one value
350+ # per line. This is done by hand because as of this writing the author
351+ # doesn't understand how RSpec does its nice hash diff printing.
352+ def difference ( keys , show_values : false )
353+ transformed_expected = expected
354+ if show_values
355+ transformed_expected = expected . transform_values { |v | v . is_a? ( Array ) ? v : [ v ] }
356+ end
357+
358+ loop_through_keys keys , transformed_expected , show_values
359+ end
360+
360361 def source_lines ( keys )
361362 line_frequency = @query_stats . query_lines_by_frequency
362363 keys_with_source_lines = keys . select { |key | line_frequency [ key ] . present? }
@@ -391,8 +392,8 @@ def reject_record(subset, current_expected, key, ignore_missing)
391392 def filter_model_names ( subset , show_values , ignore_missing )
392393 all_model_names = expected . keys + @query_stats . queries . keys
393394 if show_values
394- _expected = expected . transform_values { |v | v . is_a? ( Array ) ? v : [ v ] }
395- all_model_names . reject { |key | reject_record ( subset , _expected , key , ignore_missing ) } . uniq
395+ transformed_expected = expected . transform_values { |v | v . is_a? ( Array ) ? v : [ v ] }
396+ all_model_names . reject { |key | reject_record ( subset , transformed_expected , key , ignore_missing ) } . uniq
396397 else
397398 all_model_names . reject { |key | expected [ key ] == @query_stats . queries [ key ] [ :count ] } . uniq
398399 end
0 commit comments