12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/standard_api/test_case.rb', line 12
def self.included(klass)
model_class_name = klass.controller_class.name.gsub(/Controller$/, '').singularize
[:filters, :orders, :includes].each do |attribute|
klass.send(:class_attribute, attribute)
end
begin
model_class = model_class_name.constantize
klass.send(:filters=, model_class.attribute_names)
klass.send(:orders=, model_class.attribute_names)
klass.send(:includes=, model_class.reflect_on_all_associations.map(&:name))
rescue NameError => e
raise e if e.message != "uninitialized constant #{model_class_name}"
end
klass.extend(ClassMethods)
routes = Rails.application.routes.set.routes.inject({}) do |acc, r|
acc[r.defaults[:controller]] ||= {}
acc[r.defaults[:controller]][r.defaults[:action]] = true
acc
end
klass.controller_class.action_methods.each do |action|
if const_defined?("StandardAPI::TestCase::#{action.capitalize}Tests") && routes[klass.controller_class.controller_path][action]
klass.include("StandardAPI::TestCase::#{action.capitalize}Tests".constantize)
end
end
end
|