Class: Rails
Instance Attribute Summary
Attributes inherited from Ruby
Class Method Summary collapse
-
.all_controller_tests ⇒ Object
Returns an array consiting of all controller tests.
-
.type_to_test_dir(type) ⇒ Object
Maps
type
, for instance ‘models’, to a test directory.
Instance Method Summary collapse
- #handle! ⇒ Object
-
#tests_for_model(model) ⇒ Object
Returns an array of all tests related to the given model.
Methods inherited from Ruby
call, #initialize, run_tests, run_with_spec_runner, run_with_test_runner, #runner_bin, spec_runner_command, #test_cases_root, #test_file, test_runner_command, #test_type
Constructor Details
This class inherits a constructor from Ruby
Class Method Details
.all_controller_tests ⇒ Object
Returns an array consiting of all controller tests.
50 51 52 53 54 55 56 |
# File 'lib/kicker/recipes/rails.rb', line 50 def all_controller_tests if test_type == 'test' Dir.glob("#{test_cases_root}/functional/**/*_test.rb") else Dir.glob("#{test_cases_root}/controllers/**/*_spec.rb") end end |
.type_to_test_dir(type) ⇒ Object
Maps type
, for instance ‘models’, to a test directory.
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/kicker/recipes/rails.rb', line 23 def type_to_test_dir(type) if test_type == 'test' case type when "models" "unit" when "concerns" "unit/concerns" when "controllers", "views" "functional" when "helpers" "unit/helpers" end elsif test_type == 'spec' case type when "models" "models" when "concerns" "models/concerns" when "controllers", "views" "controllers" when "helpers" "helpers" end end end |
Instance Method Details
#handle! ⇒ Object
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 |
# File 'lib/kicker/recipes/rails.rb', line 76 def handle! @tests.concat(@files.take_and_map do |file| case file # Run all functional tests when routes.rb is saved when 'config/routes.rb' Rails.all_controller_tests # Match lib/* when /^(lib\/.+)\.rb$/ test_file($1) # Map fixtures to their related tests when %r{^#{test_cases_root}/fixtures/(\w+)\.yml$} tests_for_model($1) # Match any file in app/ and map it to a test file when %r{^app/(\w+)([\w/]*)/([\w\.]+)\.\w+$} type, namespace, file = $1, $2, $3 if dir = Rails.type_to_test_dir(type) if type == "views" namespace = namespace.split('/')[1..-1] file = "#{namespace.pop}_controller" end test_file File.join(dir, namespace, file) end end end) # And let the Ruby handler match other stuff. super end |
#tests_for_model(model) ⇒ Object
Returns an array of all tests related to the given model.
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/kicker/recipes/rails.rb', line 60 def tests_for_model(model) if test_type == 'test' %W{ unit/#{model.singularize} unit/helpers/#{model.pluralize}_helper functional/#{model.pluralize}_controller } else %W{ models/#{model.singularize} helpers/#{model.pluralize}_helper controllers/#{model.pluralize}_controller } end.map { |f| test_file f } end |