Module: MuckFormMacros

Defined in:
lib/test/shoulda_macros/forms.rb

Instance Method Summary collapse

Instance Method Details

#form_http_method(http_method) ⇒ Object



20
21
22
23
24
25
26
27
# File 'lib/test/shoulda_macros/forms.rb', line 20

def form_http_method(http_method)
  http_method = http_method.nil? ? 'post' : http_method.to_s
  if http_method == "post" || http_method == "get"
    return http_method, nil
  else
    return "post", http_method
  end
end

#should_have_form(opts) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/test/shoulda_macros/forms.rb', line 2

def should_have_form(opts)
  model = self.name.gsub(/ControllerTest$/, '').singularize.downcase
  model = model[model.rindex('::')+2..model.size] if model.include?('::')
  http_method, hidden_http_method = form_http_method opts[:method]
  should "have a #{model} form" do
    assert_select "form[action=?][method=#{http_method}]", eval(opts[:action]) do
      if hidden_http_method
        assert_select "input[type=hidden][name=_method][value=#{hidden_http_method}]"
      end
      opts[:fields].each do |attribute, type|
        attribute = attribute.is_a?(Symbol) ? "#{model}[#{attribute.to_s}]" : attribute
        assert_select "input[type=#{type.to_s}][name=?]", attribute
      end
      assert_select "input[type=submit]"
    end
  end
end