Module: Spec::Rails::Example::ControllerExampleGroup::ControllerInstanceMethods

Includes:
RenderObserver
Defined in:
lib/spec/rails/example/controller_example_group.rb

Overview

:nodoc:

Instance Method Summary collapse

Methods included from RenderObserver

#expect_render, #register_verify_after_each, #render_proxy, #should_not_receive, #should_receive, #stub!, #stub_render, #unregister_verify_after_each, #verify_rendered, #verify_rendered_proc, #warn_deprecation

Instance Method Details

#integrate_views!Object



227
228
229
# File 'lib/spec/rails/example/controller_example_group.rb', line 227

def integrate_views!
  @integrate_views = true
end

#render(options = nil, deprecated_status_or_extra_options = nil, &block) ⇒ Object

render(options = nil, deprecated_status_or_extra_options = nil, &block)

This gets added to the controller’s singleton meta class, allowing Controller Examples to run in two modes, freely switching from context to context.



179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
# File 'lib/spec/rails/example/controller_example_group.rb', line 179

def render(options=nil, deprecated_status_or_extra_options=nil, &block)
  if ::Rails::VERSION::STRING >= '2.0.0' && deprecated_status_or_extra_options.nil?
    deprecated_status_or_extra_options = {}
  end
    
  unless block_given?
    unless integrate_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
      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
  end

  if matching_message_expectation_exists(options)
    render_proxy.render(options, &block)
    @performed_render = true
  else
    if matching_stub_exists(options)
      @performed_render = true
    else
      super(options, deprecated_status_or_extra_options, &block)
    end
  end
end

#response(&block) ⇒ Object



221
222
223
224
225
# File 'lib/spec/rails/example/controller_example_group.rb', line 221

def response(&block)
  # NOTE - we're setting @update for the assert_select_spec - kinda weird, huh?
  @update = block
  @_response || @response
end