Agile Web Development with Rails, Edition 4

Agile Web Development with Rails, Edition 4

21.1 Views 19 Active Record

20.1 Testing Routes

edit test/unit/routing_test.rb
require 'test_helper'
require './config/routes.rb'
 
class RoutingTest < ActionController::TestCase
 
  def test_recognizes
    # Check the default index action gets generated
    assert_recognizes({"controller" => "store", "action" => "index"}, "/")
    
    # Check routing to an action
    assert_recognizes({"controller" => "products", "action" => "index"}, 
                      "/products")
    
    # And routing with a parameter
    assert_recognizes({ "controller" => "line_items", 
                        "action" => "create", 
                        "product_id" => "1" },
                        {:path => "/line_items", :method => :post},
                        {"product_id" => "1"})
  end
  
  def test_generates
    assert_generates("/", :controller => "store", :action => "index")
    assert_generates("/products", 
                     { :controller => "products", :action => "index"})
    assert_generates("/line_items", 
                     { :controller => "line_items", :action => "create", 
                       :product_id => "1"},
                     {:method => :post}, { :product_id => "1"})
  end
  
  def test_routing
    assert_routing("/", :controller => "store", :action => "index")
    assert_routing("/products", :controller => "products", :action => "index")
    assert_routing({:path => "/line_items", :method => :post},
                     { :controller => "line_items", :action => "create", 
                       :product_id => "1"},
                     {}, { :product_id => "1"})
  end
    
end
rake test:units
Loaded suite /home/rubys/.rvm/gems/ruby-1.8.7-p352/gems/rake-0.9.2.2/lib/rake/rake_test_loader
Started
..........
Finished in 0.462268 seconds.
 
10 tests, 46 assertions, 0 failures, 0 errors

21.1 Views 19 Active Record