spec/markaby/rails_spec.rb in markaby-0.6.9 vs spec/markaby/rails_spec.rb in markaby-0.6.10

- old
+ new

@@ -113,10 +113,45 @@ render :template => "markaby/form_for_with_multiple_fields" end def routes end + + def render_with_yielding + render :layout => "layout.mab", + :template => "markaby/yielding" + end + + def render_with_yielding_where_template_has_two_elements + render :layout => "layout.mab", + :template => "markaby/yielding_two" + end + + def render_with_yielding_content_for_block + render :layout => "layout.mab", + :template => "markaby/yielding_with_content_for" + end + + def render_content_for_with_block_helper + @obj = Object.new + def @obj.foo + "bar" + end + + render :layout => "layout.mab", + :template => "markaby/yielding_content_for_with_block_helper" + end + + def renders_content_for_with_form_for_without_double_render + @obj = Object.new + def @obj.foo + "bar" + end + + render :layout => "layout.mab", + :template => "markaby/double_output" + end end class MarkabyOnRailsTest < ActionController::TestCase def setup Markaby::Builder.restore_defaults! @@ -210,46 +245,101 @@ assert_equal ActionView::TemplateError, @controller.last_exception.class assert %r(undefined local variable or method `supercalifragilisticexpialidocious' for #<Markaby::.*Builder.*) =~ @controller.last_exception.message.to_s end - def test_renders_form_for_properly - get :renders_form_for - + def test_routes_work + get :routes assert_response :success - assert %r(<form.*></form>) =~ @response.body + expected_output = "<a href=\"/users/new\">Foo</a>" + assert_equal expected_output, @response.body end - def test_renders_form_for_with_fields_for - get :render_form_for_with_fields + if Rails::VERSION::MAJOR >= 2 + def test_renders_form_for_properly + get :renders_form_for - assert_response :success + assert_response :success - assert_equal "<form action=\"/markaby/render_form_for_with_fields\" method=\"post\"><input id=\"foo_foo\" name=\"foo[foo]\" size=\"30\" type=\"text\" /></form>", - @response.body - end + assert %r(<form.*></form>) =~ @response.body + end - def test_renders_form_for_with_multiple_fields - get :render_form_for_with_multiple_fields + def test_renders_form_for_with_fields_for + get :render_form_for_with_fields - assert_response :success + assert_response :success - expected_output = "<form action=\"/markaby/render_form_for_with_multiple_fields\" method=\"post\">" - expected_output << "<input id=\"foo_foo\" name=\"foo[foo]\" size=\"30\" type=\"text\" />" - expected_output << "<input id=\"foo_baz\" name=\"foo[baz]\" size=\"30\" type=\"text\" />" - expected_output << "</form>" + assert_equal "<form action=\"/markaby/render_form_for_with_fields\" method=\"post\"><input id=\"foo_foo\" name=\"foo[foo]\" size=\"30\" type=\"text\" /></form>", + @response.body + end - assert_equal expected_output, - @response.body - end + def test_renders_form_for_with_multiple_fields + get :render_form_for_with_multiple_fields - def test_routes_work - get :routes - assert_response :success + assert_response :success - expected_output = "<a href=\"/users/new\">Foo</a>" - assert_equal expected_output, @response.body + expected_output = "<form action=\"/markaby/render_form_for_with_multiple_fields\" method=\"post\">" + expected_output << "<input id=\"foo_foo\" name=\"foo[foo]\" size=\"30\" type=\"text\" />" + expected_output << "<input id=\"foo_baz\" name=\"foo[baz]\" size=\"30\" type=\"text\" />" + expected_output << "</form>" + + assert_equal expected_output, + @response.body + end + + def test_rendering_with_yield_works + get :render_with_yielding + assert_response :success + + expected_output = '<div id="main"><p class="hey">hi there</p></div>' + assert_equal expected_output, @response.body + end + + def test_render_with_yielding_where_template_has_two_elements + get :render_with_yielding_where_template_has_two_elements + assert_response :success + + expected_output = '<div id="main"><p class="hi">hi there</p><p class="hi">hi again</p></div>' + assert_equal expected_output, @response.body + end + + def test_render_with_yielding_content_for_block + get :render_with_yielding_content_for_block + assert_response :success + + expected_output = '<div id="main"></div><div id="foo"><p>in foo content_for</p></div>' + assert_equal expected_output, @response.body + end + + def test_render_content_for_with_block_helper + get :render_content_for_with_block_helper + assert_response :success + + expected_output = '<div id="main"></div><div id="foo">' + expected_output << '<form action="/markaby/render_content_for_with_block_helper" method="post">' + expected_output << '<input id="foo_foo" name="foo[foo]" size="30" type="text" />' + expected_output << '</form>' + expected_output << '</div>' + + assert_equal expected_output, @response.body + end + + def test_renders_content_for_with_form_for_without_double_render + get :renders_content_for_with_form_for_without_double_render + assert_response :success + + expected_output = '<div id="main"></div><div id="foo">' + expected_output << '<form action="/markaby/renders_content_for_with_form_for_without_double_render" method="post">' + expected_output << '<p class="foo">' + expected_output << '<input id="foo_foo" name="foo[foo]" size="30" type="text" />' + expected_output << '<input id="foo_submit" name="commit" type="submit" value="foo" />' + expected_output << '</p>' + expected_output << '</form>' + expected_output << '</div>' + + assert_equal expected_output, @response.body + end end end describe "rails version" do it "should support the current rails version" do