diff --git a/spec/integration/rack/app.rb b/spec/integration/rack/app.rb new file mode 100644 index 00000000..61ab3328 --- /dev/null +++ b/spec/integration/rack/app.rb @@ -0,0 +1,73 @@ +require "rubygems" +require "sinatra/base" + +class RackApp < Sinatra::Base + use_in_file_templates! + + get "/" do + erb :home + end + + get "/go" do + erb :go + end + + get "/internal_redirect" do + redirect "/" + end + + get "/external_redirect" do + redirect "http://google.com" + end + + get "/absolute_redirect" do + redirect URI.join(request.url, "foo").to_s + end + + get "/foo" do + "spam" + end + + post "/go" do + @user = params[:name] + @email = params[:email] + erb :hello + end +end + +__END__ +@@ layout + + + sinatra testing with webrat + + <%= yield %> + + + +@@ home +

visit there

+ +
+ +
+ +@@ go +
+
+ + +
+
+ + +
+ +
+ +@@ hello +

Hello, <%= @user %>

+

Your email is: <%= @email %>

diff --git a/spec/integration/rack/rack_app.rb b/spec/integration/rack/rack_app.rb deleted file mode 100644 index 978f7348..00000000 --- a/spec/integration/rack/rack_app.rb +++ /dev/null @@ -1,16 +0,0 @@ -require "rubygems" -require "sinatra/base" - -class RackApp < Sinatra::Default - get "/" do - "Hello World" - end - - get "/redirect_absolute_url" do - redirect URI.join(request.url, "foo").to_s - end - - get "/foo" do - "spam" - end -end diff --git a/spec/integration/rack/test/test_helper.rb b/spec/integration/rack/test/helper.rb similarity index 84% rename from spec/integration/rack/test/test_helper.rb rename to spec/integration/rack/test/helper.rb index bfa85b9b..7284dcfc 100644 --- a/spec/integration/rack/test/test_helper.rb +++ b/spec/integration/rack/test/helper.rb @@ -4,6 +4,7 @@ # require "redgreen" require File.dirname(__FILE__) + "/../../../../lib/webrat" +require File.dirname(__FILE__) + "/../app" Webrat.configure do |config| config.mode = :rack @@ -13,6 +14,7 @@ class Test::Unit::TestCase include Rack::Test::Methods include Webrat::Methods include Webrat::Matchers + include Webrat::HaveTagMatcher def app Rack::Builder.new { diff --git a/spec/integration/rack/test/webrat_rack_test.rb b/spec/integration/rack/test/webrat_rack_test.rb index 4fdef097..75e26d47 100644 --- a/spec/integration/rack/test/webrat_rack_test.rb +++ b/spec/integration/rack/test/webrat_rack_test.rb @@ -1,67 +1,40 @@ -require File.dirname(__FILE__) + "/test_helper" -require File.dirname(__FILE__) + "/../rack_app" +require File.dirname(__FILE__) + "/helper" class WebratRackTest < Test::Unit::TestCase - def test_visit_returns_response - response = visit "/" - assert response.ok? - end + def test_visits_pages + visit "/" + click_link "there" - def test_last_response_is_available - visit "/" - assert last_response.ok? + assert_have_tag("form[@method='post'][@action='/go']") end - def test_last_request_is_available + # def test_submits_form + # visit "/go" + # fill_in "Name", :with => "World" + # fill_in "Email", :with => "world@example.org" + # click_button "Submit" + # + # assert_contain "Hello, World" + # assert_contain "Your email is: world@example.org" + # end + + def test_check_value_of_field visit "/" - assert_equal "/", last_request.env["PATH_INFO"] + assert_equal field_labeled("Prefilled").value, "text" end - def test_redirects - visit "/redirect_absolute_url" - assert_equal "spam", response_body + def test_follows_internal_redirects + visit "/internal_redirect" + assert_contain "visit" end - def test_assertions_after_visit - visit "/" - assert_contain "Hello World" + def test_does_not_follow_external_redirects + visit "/external_redirect" + assert last_response.redirect? end - def test_assertions_after_visit - get "/" - assert_contain "Hello World" + def test_absolute_url_redirect + visit "/absolute_redirect" + assert_contain "spam" end - - # def test_visits_pages - # visit "/" - # assert response_body.include?("visit") - # - # click_link "there" - # assert response_body.include?('
') - # end - # - # def test_submits_form - # visit "/go" - # fill_in "Name", :with => "World" - # fill_in "Email", :with => "world@example.org" - # click_button "Submit" - # - # assert response_body.include?("Hello, World") - # assert response_body.include?("Your email is: world@example.org") - # end - # - # def test_check_value_of_field - # visit "/" - # assert field_labeled("Prefilled").value, "text" - # end - # - # def test_follows_internal_redirects - # visit "/internal_redirect" - # assert response_body.include?("visit") - # end - # - # def test_does_not_follow_external_redirects - # visit "/external_redirect" - # assert response_code == 302 - # end end