Adding two tests for Rails integration

This commit is contained in:
Bryan Helmkamp 2008-12-29 01:30:26 -05:00
parent 39e0200608
commit add38820e5
5 changed files with 58 additions and 75 deletions

View File

@ -0,0 +1,10 @@
class WebratController < ApplicationController
def form
end
def submit
render :text => "OK"
end
end

View File

@ -0,0 +1,17 @@
<h1>Webrat Form</h1>
<% form_tag submit_path do %>
<label>
Text field <%= text_field_tag "text_field" %>
</label>
<label>
TOS <%= check_box_tag "tos" %>
</label>
<label>
<%= select_tag "month", "<option></option><option>January</option>" %>
</label>
<%= submit_tag "Test" %>
<% end %>

View File

@ -1,43 +1,6 @@
ActionController::Routing::Routes.draw do |map| ActionController::Routing::Routes.draw do |map|
# The priority is based upon order of creation: first created -> highest priority. map.with_options :controller => "webrat" do |webrat|
webrat.submit "/submit", :action => "submit"
# Sample of regular route: webrat.root :action => "form"
# map.connect 'products/:id', :controller => 'catalog', :action => 'view' end
# Keep in mind you can assign values other than :controller and :action
# Sample of named route:
# map.purchase 'products/:id/purchase', :controller => 'catalog', :action => 'purchase'
# This route can be invoked with purchase_url(:id => product.id)
# Sample resource route (maps HTTP verbs to controller actions automatically):
# map.resources :products
# Sample resource route with options:
# map.resources :products, :member => { :short => :get, :toggle => :post }, :collection => { :sold => :get }
# Sample resource route with sub-resources:
# map.resources :products, :has_many => [ :comments, :sales ], :has_one => :seller
# Sample resource route with more complex sub-resources
# map.resources :products do |products|
# products.resources :comments
# products.resources :sales, :collection => { :recent => :get }
# end
# Sample resource route within a namespace:
# map.namespace :admin do |admin|
# # Directs /admin/products/* to Admin::ProductsController (app/controllers/admin/products_controller.rb)
# admin.resources :products
# end
# You can have the root of your site routed with map.root -- just remember to delete public/index.html.
# map.root :controller => "welcome"
# See how all your routes lay out with "rake routes"
# Install the default routes as the lowest priority.
# Note: These default routes make all actions in every controller accessible via GET requests. You should
# consider removing the them or commenting them out if you're using named routes and resources.
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
end end

View File

@ -1,7 +1,17 @@
require 'test_helper' require 'test_helper'
class WebratTest < ActionController::IntegrationTest class WebratTest < ActionController::IntegrationTest
test "should pass" do test "should visit pages" do
assert true visit root_path
assert_tag "Webrat Form"
assert response.body.include?("Webrat Form")
end
test "should submit forms" do
visit root_path
fill_in "Text field", :with => "Hello"
check "TOS"
select "January"
click_button "Test"
end end
end end

View File

@ -1,38 +1,21 @@
ENV["RAILS_ENV"] = "test" ENV["RAILS_ENV"] = "test"
require File.expand_path(File.dirname(__FILE__) + "/../config/environment") require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
require 'test_help' require 'test_help'
require "redgreen"
class Test::Unit::TestCase require "webrat"
# Transactional fixtures accelerate your tests by wrapping each test method
# in a transaction that's rolled back on completion. This ensures that the
# test database remains unchanged so your fixtures don't have to be reloaded
# between every test method. Fewer database queries means faster tests.
#
# Read Mike Clark's excellent walkthrough at
# http://clarkware.com/cgi/blosxom/2005/10/24#Rails10FastTesting
#
# Every Active Record database supports transactions except MyISAM tables
# in MySQL. Turn off transactional fixtures in this case; however, if you
# don't care one way or the other, switching from MyISAM to InnoDB tables
# is recommended.
#
# The only drawback to using transactional fixtures is when you actually
# need to test transactions. Since your test is bracketed by a transaction,
# any transactions started in your code will be automatically rolled back.
self.use_transactional_fixtures = true
# Instantiated fixtures are slow, but give you @david where otherwise you Webrat.configure do |config|
# would need people(:david). If you don't want to migrate your existing config.mode = :rails
# test cases which use the @david style and don't mind the speed hit (each
# instantiated fixtures translates to a database query per test method),
# then set this back to true.
self.use_instantiated_fixtures = false
# Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
#
# Note: You'll currently still have to declare fixtures explicitly in integration tests
# -- they do not yet inherit this setting
fixtures :all
# Add more helper methods to be used by all tests here...
end end
ActionController::Base.class_eval do
def perform_action
perform_action_without_rescue
end
end
Dispatcher.class_eval do
def self.failsafe_response(output, status, exception = nil)
raise exception
end
end