lib/micronaut/rails/controllers.rb in spicycode-micronaut-rails-0.2.4 vs lib/micronaut/rails/controllers.rb in spicycode-micronaut-rails-0.2.5
- old
+ new
@@ -18,76 +18,69 @@
ActionController::Routing::Routes.recognize_path(path, :method => method)
end
end
+ module TemplateIsolationExtensions
+ def file_exists?(ignore); true; end
+
+ def render_file(*args)
+ @first_render ||= args[0] unless args[0] =~ /^layouts/
+ end
+
+ def render(*args)
+ return super if Hash === args.last && args.last[:inline]
+ record_render(args[0])
+ end
+
+ private
+
+ def record_render(opts)
+ @_rendered ||= {}
+ (@_rendered[:template] ||= opts[:file]) if opts[:file]
+ (@_rendered[:partials][opts[:partial]] += 1) if opts[:partial]
+ end
+
+ end
+
+
module RenderOverrides
def render_views!
@render_views = true
end
- def render_views?
+ def rendering_views?
@render_views
end
- def render(options=nil, &block)
- response.headers['Status'] = interpret_status((options.is_a?(Hash) && options[:status]) || ::ActionController::Base::DEFAULT_RENDER_STATUS_CODE)
-
- unless block_given? || render_views?
- if @template.respond_to?(:finder)
- (class << @template.finder; self; end).class_eval do
- define_method :file_exists? do; true; end
- end
- else
- (class << @template; self; end).class_eval do
- define_method :file_exists? do; true; end
- end
+ def render(options=nil, extra_options={}, &block)
+ unless block_given?
+ unless rendering_views?
+ @template.extend TemplateIsolationExtensions
end
- (class << @template; self; end).class_eval do
-
- define_method :render_file do |*args|
- @first_render ||= args[0] unless args[0] =~ /^layouts/
- @_first_render ||= args[0] unless args[0] =~ /^layouts/
- end
-
- define_method :_pick_template do |*args|
- @_first_render ||= args[0] unless args[0] =~ /^layouts/
- PickedTemplate.new
- end
-
- end
-
- end
-
- super(options, &block)
+ end
+
+ super
end
end
- # Returned by _pick_template when running controller examples in isolation mode.
- class PickedTemplate
- # Do nothing when running controller examples in isolation mode.
- def render_template(*ignore_args); end
- # Do nothing when running controller examples in isolation mode.
- def render_partial(*ignore_args); end
- end
-
def self.extended(extended_behaviour)
extended_behaviour.send :include, ::ActionController::TestProcess, InstanceMethods, ::Micronaut::Rails::Matchers::Controllers
extended_behaviour.describes.send :include, RenderOverrides, ::ActionController::TestCase::RaiseActionExceptions
extended_behaviour.before do
- @controller = self.class.describes.new
- @controller.request = @request = ::ActionController::TestRequest.new
+ @request = ::ActionController::TestRequest.new
@response = ::ActionController::TestResponse.new
- @response.session = @request.session
-
+ @controller ||= self.class.describes.new
+
+ @controller.request = @request
@controller.params = {}
- @controller.send(:initialize_current_url)
+ @controller.send(:initialize_current_url)
end
end
end
end
-end
\ No newline at end of file
+end