@@ -61,28 +61,26 @@ def compatible_request(method, action, hash = {})
61
61
62
62
def deep_match? ( actual , expected , breadcrumb = [ ] )
63
63
num = 0
64
- for pdesc in expected do
64
+ expected . each do | pdesc |
65
65
if pdesc . is_a? Symbol
66
- return false unless fields_match? ( actual . params_ordered [ num ] , pdesc , breadcrumb )
66
+ return false unless matching_param ( actual . params_ordered , pdesc , breadcrumb )
67
67
elsif pdesc . is_a? Hash
68
- return false unless fields_match? ( actual . params_ordered [ num ] , pdesc . keys [ 0 ] , breadcrumb )
69
- return false unless deep_match? ( actual . params_ordered [ num ] . validator , pdesc . values [ 0 ] , breadcrumb + [ pdesc . keys [ 0 ] ] )
68
+ param = matching_param ( actual . params_ordered , pdesc . keys [ 0 ] , breadcrumb )
69
+ return false unless param
70
+ return false unless deep_match? ( param . validator , pdesc . values [ 0 ] , breadcrumb + [ pdesc . keys [ 0 ] ] )
70
71
end
71
72
num +=1
72
73
end
73
74
@fail_message = "expected property count#{ breadcrumb == [ ] ? '' : ' of ' + ( breadcrumb ) . join ( '.' ) } (#{ actual . params_ordered . count } ) to be #{ num } "
74
75
actual . params_ordered . count == num
75
76
end
76
77
77
- def fields_match? ( param , expected_name , breadcrumb )
78
- return false unless have_field? ( param , expected_name , breadcrumb )
79
- @fail_message = "expected #{ ( breadcrumb + [ param . name ] ) . join ( '.' ) } to eq #{ ( breadcrumb + [ expected_name ] ) . join ( '.' ) } "
80
- param . name . to_s == expected_name . to_s
81
- end
82
-
83
- def have_field? ( field , expected_name , breadcrumb )
84
- @fail_message = "expected property #{ ( breadcrumb +[ expected_name ] ) . join ( '.' ) } "
85
- !field . nil?
78
+ def matching_param ( params , expected_name , breadcrumb )
79
+ param = params . find { |p | p . name . to_s == expected_name . to_s }
80
+ unless param
81
+ @fail_message = "expected [#{ params . map ( &:name ) . join ( ', ' ) } ] to include #{ ( breadcrumb + [ expected_name ] ) . join ( '.' ) } "
82
+ end
83
+ param
86
84
end
87
85
88
86
failure_message do |actual |
0 commit comments