2009-05-20 19:23:55 -04:00
$: . unshift ( File . dirname ( __FILE__ ) + '/../../lib' )
$: . unshift ( File . dirname ( __FILE__ ) + '/../../../activesupport/lib' )
2009-05-01 19:03:46 -04:00
$: . unshift ( File . dirname ( __FILE__ ) + '/../lib' )
2009-05-22 18:17:05 -04:00
$: . unshift ( File . dirname ( __FILE__ ) + '/../fixtures/helpers' )
$: . unshift ( File . dirname ( __FILE__ ) + '/../fixtures/alternate_helpers' )
2009-05-20 19:23:55 -04:00
ENV [ 'new_base' ] = " true "
$stderr . puts " Running old tests on new_base "
2009-05-01 19:03:46 -04:00
require 'test/unit'
require 'active_support'
require 'active_support/test_case'
require 'action_controller/abstract'
require 'action_controller/new_base'
require 'fixture_template'
2009-05-01 20:53:20 -04:00
require 'action_controller/testing/process2'
2009-05-01 19:03:46 -04:00
require 'action_view/test_case'
2009-05-15 20:49:11 -04:00
require 'action_controller/testing/integration'
require 'active_support/dependencies'
2009-05-20 19:52:56 -04:00
$tags [ :new_base ] = true
2009-05-22 12:15:43 -04:00
begin
require 'ruby-debug'
Debugger . settings [ :autoeval ] = true
Debugger . start
rescue LoadError
# Debugging disabled. `gem install ruby-debug` to enable.
end
2009-05-20 19:52:56 -04:00
2009-05-15 20:49:11 -04:00
ActiveSupport :: Dependencies . hook!
2009-05-01 19:03:46 -04:00
2009-05-20 19:23:55 -04:00
FIXTURE_LOAD_PATH = File . join ( File . dirname ( __FILE__ ) , '../fixtures' )
2009-05-01 19:03:46 -04:00
module ActionController
2009-05-15 20:49:11 -04:00
Base . session = {
:key = > '_testing_session' ,
:secret = > '8273f16463985e2b3747dc25e30f2528'
}
2009-05-01 19:03:46 -04:00
class ActionControllerError < StandardError #:nodoc:
end
class SessionRestoreError < ActionControllerError #:nodoc:
end
class RenderError < ActionControllerError #:nodoc:
end
class RoutingError < ActionControllerError #:nodoc:
attr_reader :failures
def initialize ( message , failures = [ ] )
super ( message )
@failures = failures
end
end
class MethodNotAllowed < ActionControllerError #:nodoc:
attr_reader :allowed_methods
def initialize ( * allowed_methods )
super ( " Only #{ allowed_methods . to_sentence ( :locale = > :en ) } requests are allowed. " )
@allowed_methods = allowed_methods
end
def allowed_methods_header
allowed_methods . map { | method_symbol | method_symbol . to_s . upcase } * ', '
end
def handle_response! ( response )
response . headers [ 'Allow' ] || = allowed_methods_header
end
end
class NotImplemented < MethodNotAllowed #:nodoc:
end
class UnknownController < ActionControllerError #:nodoc:
end
class MissingFile < ActionControllerError #:nodoc:
end
class RenderError < ActionControllerError #:nodoc:
end
class SessionOverflowError < ActionControllerError #:nodoc:
DEFAULT_MESSAGE = 'Your session data is larger than the data column in which it is to be stored. You must increase the size of your data column if you intend to store large data.'
def initialize ( message = nil )
super ( message || DEFAULT_MESSAGE )
end
end
class UnknownHttpMethod < ActionControllerError #:nodoc:
end
2009-05-11 17:48:58 -04:00
class Base
2009-05-12 19:21:34 -04:00
include ActionController :: Testing
2009-05-01 19:03:46 -04:00
end
Base . view_paths = FIXTURE_LOAD_PATH
class TestCase
2009-05-01 20:53:20 -04:00
include TestProcess
2009-05-01 19:03:46 -04:00
setup do
ActionController :: Routing :: Routes . draw do | map |
map . connect ':controller/:action/:id'
end
end
def assert_template ( options = { } , message = nil )
2009-05-12 19:21:34 -04:00
validate_request!
hax = @controller . _action_view . instance_variable_get ( :@_rendered )
case options
2009-05-22 12:40:26 -04:00
when NilClass , String
2009-05-12 19:21:34 -04:00
rendered = ( hax [ :template ] || [ ] ) . map { | t | t . identifier }
msg = build_message ( message ,
" expecting <?> but rendering with <?> " ,
options , rendered . join ( ', ' ) )
assert_block ( msg ) do
if options . nil?
hax [ :template ] . blank?
else
rendered . any? { | t | t . match ( options ) }
2009-05-01 19:03:46 -04:00
end
2009-05-12 19:21:34 -04:00
end
when Hash
if expected_partial = options [ :partial ]
partials = hax [ :partials ]
if expected_count = options [ :count ]
found = partials . detect { | p , _ | p . identifier . match ( expected_partial ) }
actual_count = found . nil? ? 0 : found . second
msg = build_message ( message ,
" expecting ? to be rendered ? time(s) but rendered ? time(s) " ,
expected_partial , expected_count , actual_count )
assert ( actual_count == expected_count . to_i , msg )
2009-05-01 19:03:46 -04:00
else
2009-05-12 19:21:34 -04:00
msg = build_message ( message ,
" expecting partial <?> but action rendered <?> " ,
options [ :partial ] , partials . keys )
assert ( partials . keys . any? { | p | p . identifier . match ( expected_partial ) } , msg )
2009-05-01 19:03:46 -04:00
end
2009-05-12 19:21:34 -04:00
else
assert hax [ :partials ] . empty? ,
" Expected no partials to be rendered "
2009-05-01 19:03:46 -04:00
end
end
2009-05-15 20:49:11 -04:00
end
2009-05-01 19:03:46 -04:00
end
2009-05-13 04:10:37 -04:00
end