Skip to content

Commit

Permalink
More integration specs for the rack mode
Browse files Browse the repository at this point in the history
One test is still pending because form fields are double-escaped.
  • Loading branch information
sr committed Jun 24, 2009
1 parent 4c010d1 commit cf8d891
Show file tree
Hide file tree
Showing 4 changed files with 101 additions and 69 deletions.
73 changes: 73 additions & 0 deletions 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
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<title>sinatra testing with webrat</title>
<body>
<%= yield %>
</body>
</html>

@@ home
<p> visit <a href="/go">there</a></p>

<form>
<label>
Prefilled
<input type="text" name="prefilled" value="text" />
</label>
</form>

@@ go
<form method="post" action="/go">
<div>
<label for="name">Name</label>
<input type="text" name="name" id="name">
</div>
<div>
<label for="email">Email</label>
<input type="text" name="email" id="email">
</div>
<input type="submit" value="Submit" />
</form>

@@ hello
<p>Hello, <%= @user %></p>
<p>Your email is: <%= @email %></p>
16 changes: 0 additions & 16 deletions spec/integration/rack/rack_app.rb

This file was deleted.

Expand Up @@ -4,6 +4,7 @@
# require "redgreen"

require File.dirname(__FILE__) + "/../../../../lib/webrat"
require File.dirname(__FILE__) + "/../app"

Webrat.configure do |config|
config.mode = :rack
Expand All @@ -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 {
Expand Down
79 changes: 26 additions & 53 deletions 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?('<form method="post" action="/go">')
# 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

0 comments on commit cf8d891

Please sign in to comment.