+++ /dev/null
-require 'active_support/test_case'
-
-module ActionView
- class Base
- alias_method :initialize_without_template_tracking, :initialize
- def initialize(*args)
- @_rendered = { :template => nil, :partials => Hash.new(0) }
- initialize_without_template_tracking(*args)
- end
- end
-
- module Renderable
- alias_method :render_without_template_tracking, :render
- def render(view, local_assigns = {})
- if respond_to?(:path) && !is_a?(InlineTemplate)
- rendered = view.instance_variable_get(:@_rendered)
- rendered[:partials][self] += 1 if is_a?(RenderablePartial)
- rendered[:template] ||= self
- end
- render_without_template_tracking(view, local_assigns)
- end
- end
-
- class TestCase < ActiveSupport::TestCase
- include ActionController::TestCase::Assertions
- include ActionController::TestProcess
-
- class_inheritable_accessor :helper_class
- @@helper_class = nil
-
- class << self
- def tests(helper_class)
- self.helper_class = helper_class
- end
-
- def helper_class
- if current_helper_class = read_inheritable_attribute(:helper_class)
- current_helper_class
- else
- self.helper_class = determine_default_helper_class(name)
- end
- end
-
- def determine_default_helper_class(name)
- name.sub(/Test$/, '').constantize
- rescue NameError
- nil
- end
- end
-
- include ActionView::Helpers
- include ActionController::PolymorphicRoutes
- include ActionController::RecordIdentifier
-
- setup :setup_with_helper_class
-
- def setup_with_helper_class
- if helper_class && !self.class.ancestors.include?(helper_class)
- self.class.send(:include, helper_class)
- end
-
- self.output_buffer = ''
- end
-
- class TestController < ActionController::Base
- attr_accessor :request, :response, :params
-
- def initialize
- @request = ActionController::TestRequest.new
- @response = ActionController::TestResponse.new
-
- @params = {}
- send(:initialize_current_url)
- end
- end
-
- protected
- attr_accessor :output_buffer
-
- private
- def method_missing(selector, *args)
- controller = TestController.new
- return controller.__send__(selector, *args) if ActionController::Routing::Routes.named_routes.helpers.include?(selector)
- super
- end
- end
-end