# The 'dummies_controller.rb' controller tests the ":except => [:method_one, :method_two]" case. (Look at "dummies_alt_controller.rb" for the ":only =>" case) require File.join(File.dirname(__FILE__), 'test_helper') require File.join(File.dirname(__FILE__), 'fixtures/dummies_controller') require File.join(File.dirname(__FILE__), 'fixtures/dummies_alt_controller') # this is an unfortunate necessity, as a consequence of the way in which # the instantiation of dummies_controller will affect the dummy model RUNNING_ALL_TESTS = true ActionController::Routing::Routes.reload rescue nil ActionController::Routing::Routes.draw do |map| map.connect ':controller/:action/:id' end # Re-raise errors caught by the controller. class DummiesController; def rescue_action(e) raise e end; end # Re-raise errors caught by the controller. class DummiesAltController; def rescue_action(e) raise e end; end class User attr_accessor :account def initialize(params) self.account = params end end class DummiesControllerTest < Test::Unit::TestCase require_fixture 'dummy' fixtures :dummies, :accounts def setup @controller = DummiesController.new @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new @controller.current_user = User.new(accounts(:account_1)) end def test_should_get_show_for_id get :show, :id => 1 assert_response :success end def test_should_update_dummies put :update, :id => 1, :dummies => { } assert assigns(:dummy) assert_response :success end def test_should_fail_to_find_dummy_id_two_for_user_1 get :show, :id => 2 assert_response 500 end def test_should_find_dummy_id_two_for_user_2 @controller.current_user = User.new(accounts(:account_2)) get :show, :id => 2 assert_response :success end def test_should_allow_new_but_raise_on_show @controller.current_user = nil get :new assert_response :success assert_raise(NoMethodError) { get :show, :id => 1 } end def test_should_allow_index_but_raise_on_destroy @controller = DummiesAltController.new @controller.current_user = User.new(accounts(:account_1)) get :index assert_response :success @controller.current_user = nil assert_raise(NoMethodError) { put :update, :id => 1, :dummies => { } } end end