Module: ShouldaMatchmakers::Generator::ActionController::ControllerMatcherGeneratorHelper

Included in:
ControllerMatcherGenerator
Defined in:
lib/generators/shoulda_matchmakers/controller_matcher_generator_helper.rb

Instance Method Summary collapse

Instance Method Details

#filter_action_controller_controller_names_with_config_options(app_action_controller_descendants_names) ⇒ Object



77
78
79
80
81
82
83
84
85
86
87
# File 'lib/generators/shoulda_matchmakers/controller_matcher_generator_helper.rb', line 77

def filter_action_controller_controller_names_with_config_options(app_action_controller_descendants_names)
  config_included_option_action_controller_controller_names = ShouldaMatchmakers.configuration.action_controller_controller_names_included
  config_excluded_option_action_controller_controller_names = ShouldaMatchmakers.configuration.action_controller_controller_names_excluded
  if config_included_option_action_controller_controller_names.present?
    filter_action_controller_controller_names_with_include_option(app_action_controller_descendants_names, config_included_option_action_controller_controller_names).uniq.sort
  elsif config_excluded_option_action_controller_controller_names.present?
    filter_action_controller_controller_names_with_exclude_option(app_action_controller_descendants_names, config_excluded_option_action_controller_controller_names).uniq.sort
  else
    []
  end
end

#filter_action_controller_controller_names_with_exclude_option(app_action_controller_descendants_names, exclude_option_action_controller_controller_names) ⇒ Object



54
55
56
# File 'lib/generators/shoulda_matchmakers/controller_matcher_generator_helper.rb', line 54

def filter_action_controller_controller_names_with_exclude_option(app_action_controller_descendants_names, exclude_option_action_controller_controller_names)
  app_action_controller_descendants_names.map.reject { |app_controller_name| exclude_option_action_controller_controller_names.include? app_controller_name }.uniq.sort
end

#filter_action_controller_controller_names_with_generator_exclude_and_config_options(app_action_controller_descendants_names, generator_exclude_and_config_options_action_controller_controller_names) ⇒ Object



68
69
70
71
72
73
74
75
# File 'lib/generators/shoulda_matchmakers/controller_matcher_generator_helper.rb', line 68

def filter_action_controller_controller_names_with_generator_exclude_and_config_options(app_action_controller_descendants_names, generator_exclude_and_config_options_action_controller_controller_names)
  selected_action_controller_controller_names = filter_action_controller_controller_names_with_config_options(app_action_controller_descendants_names)
  if selected_action_controller_controller_names.present?
    filter_action_controller_controller_names_with_exclude_option(selected_action_controller_controller_names, generator_exclude_and_config_options_action_controller_controller_names).uniq.sort
  else
    filter_action_controller_controller_names_with_exclude_option(app_action_controller_descendants_names, generator_exclude_and_config_options_action_controller_controller_names).uniq.sort
  end
end

#filter_action_controller_controller_names_with_generator_include_and_config_options(app_action_controller_descendants_names, generator_include_and_config_options_action_controller_controller_names) ⇒ Object



58
59
60
61
62
63
64
65
66
# File 'lib/generators/shoulda_matchmakers/controller_matcher_generator_helper.rb', line 58

def filter_action_controller_controller_names_with_generator_include_and_config_options(app_action_controller_descendants_names, generator_include_and_config_options_action_controller_controller_names)
  selected_app_action_controller_descendants_names = filter_action_controller_controller_names_with_config_options(app_action_controller_descendants_names)
  if selected_app_action_controller_descendants_names.present?
    selected_app_action_controller_descendants_names +
      filter_action_controller_controller_names_with_include_option(app_action_controller_descendants_names, generator_include_and_config_options_action_controller_controller_names).uniq.sort
  else
    filter_action_controller_controller_names_with_include_option(app_action_controller_descendants_names, generator_include_and_config_options_action_controller_controller_names).uniq.sort
  end
end

#filter_action_controller_controller_names_with_include_option(app_action_controller_descendants_names, include_option_action_controller_controller_names) ⇒ Object



50
51
52
# File 'lib/generators/shoulda_matchmakers/controller_matcher_generator_helper.rb', line 50

def filter_action_controller_controller_names_with_include_option(app_action_controller_descendants_names, include_option_action_controller_controller_names)
  app_action_controller_descendants_names.map.select { |app_controller_name| include_option_action_controller_controller_names.include? app_controller_name }.uniq.sort
end

#filter_app_action_controller_descendants_names(app_action_controller_descendants_names, generator_options) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/generators/shoulda_matchmakers/controller_matcher_generator_helper.rb', line 26

def filter_app_action_controller_descendants_names(app_action_controller_descendants_names, generator_options)
  generator_include_option_action_controller_controller_names = generator_options.fetch('include')
  generator_exclude_option_action_controller_controller_names = generator_options.fetch('exclude')
  generator_include_and_config_options_action_controller_controller_names = generator_options.fetch('include_and_config')
  generator_exclude_and_config_options_action_controller_controller_names = generator_options.fetch('exclude_and_config')
  if generator_include_option_action_controller_controller_names.present?
    filter_action_controller_controller_names_with_include_option(app_action_controller_descendants_names, generator_include_option_action_controller_controller_names)
  elsif generator_exclude_option_action_controller_controller_names.present?
    filter_action_controller_controller_names_with_exclude_option(app_action_controller_descendants_names, generator_exclude_option_action_controller_controller_names)
  elsif generator_include_and_config_options_action_controller_controller_names.present?
    filter_action_controller_controller_names_with_generator_include_and_config_options(app_action_controller_descendants_names, generator_include_and_config_options_action_controller_controller_names)
  elsif generator_exclude_and_config_options_action_controller_controller_names.present?
    filter_action_controller_controller_names_with_generator_exclude_and_config_options(app_action_controller_descendants_names, generator_exclude_and_config_options_action_controller_controller_names)
  else
    selected_app_action_controller_descendants_names = filter_action_controller_controller_names_with_config_options(app_action_controller_descendants_names)
    if selected_app_action_controller_descendants_names.present?
      selected_app_action_controller_descendants_names
    else
      app_action_controller_descendants_names.uniq.sort
    end
  end

end

#get_app_action_controller_descendants_namesObject



10
11
12
13
14
15
16
# File 'lib/generators/shoulda_matchmakers/controller_matcher_generator_helper.rb', line 10

def get_app_action_controller_descendants_names
  if defined?(::ActionController::Base)
    ::ActionController::Base.descendants.map(&:name)
  else
    []
  end
end

#load_applicationObject



6
7
8
# File 'lib/generators/shoulda_matchmakers/controller_matcher_generator_helper.rb', line 6

def load_application
  Rails.application.try(:eager_load!)
end

#save_generate(controller_name) ⇒ Object



18
19
20
21
22
23
24
# File 'lib/generators/shoulda_matchmakers/controller_matcher_generator_helper.rb', line 18

def save_generate(controller_name)
  begin
    yield
  rescue => e
    puts "Cannot create controller spec for #{ controller_name }. Reason #{ e.message }"
  end
end