75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
# File 'lib/standard_api/test_case.rb', line 75
def include_filter_tests
model.instance_variable_get('@filters').each do |filter|
next if filter[1].is_a?(Proc) next if model.reflect_on_association(filter[0])
define_method("test_model_filter_#{filter[0]}") do
m = create_model
value = m.send(filter[0])
assert_predicate = -> (predicate) {
get :index, where: predicate, format: 'json'
assert_equal model.filter(predicate).to_sql, assigns(plural_name).to_sql
}
case model.columns_hash[filter[0].to_s].type
when :jsonb, :json assert_predicate.call({ filter[0] => value })
else
case value
when Array
assert_predicate.call({ filter[0] => value }) assert_predicate.call({ filter[0] => value[0] }) else
assert_predicate.call({ filter[0] => value }) assert_predicate.call({ filter[0] => { gt: value } }) assert_predicate.call({ filter[0] => { greater_than: value } })
assert_predicate.call({ filter[0] => { lt: value } }) assert_predicate.call({ filter[0] => { less_than: value } })
assert_predicate.call({ filter[0] => { gte: value } }) assert_predicate.call({ filter[0] => { gteq: value } })
assert_predicate.call({ filter[0] => { greater_than_or_equal_to: value } })
assert_predicate.call({ filter[0] => { lte: value } }) assert_predicate.call({ filter[0] => { lteq: value } })
assert_predicate.call({ filter[0] => { less_than_or_equal_to: value } })
end
end
end
end
end
|