Module: Neo::Rails::Scenarios::TestHelper::ClassMethods

Defined in:
lib/neo/rails/scenarios/test_helper.rb

Instance Method Summary collapse

Instance Method Details

#test_scenarios(options = {}) ⇒ Object

Creates test methods for each defined scenario defined in controller.



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/neo/rails/scenarios/test_helper.rb', line 21

def test_scenarios(options={})
  controller_class = options.delete(:controller) || self.controller_class
  raise "no controller_class defined? Use 'tests MyController'" unless controller_class
  return unless controller_class.respond_to?(:list_scenarios)
  scenarios = controller_class.list_scenarios

  if except = options.delete(:except)
    except = Set.new(Array(except))
    scenarios.reject! { |scenario| except.include?(scenario.name) }
  end

  return if scenarios.empty?

  scenarios.each do |scenario|
    method        = scenario.options[:method] || :get
    path          = scenario.action
    scenario_name = scenario.name

    test "test scenario #{controller_class}##{method} #{path.inspect}, :scenario => #{scenario_name.inspect}" do

      send(method, path, :id => 1, :scenario => scenario_name)
      assert_response :success
    end
  end
end