Sha256: 0a18cd7ab66221afacab9ba722a24b752c57dc0218f2c144ca7fe70577f5463b

Contents?: true

Size: 1.78 KB

Versions: 1

Compression:

Stored size: 1.78 KB

Contents

require 'webrat'

module ViewExampleGroupBehaviour
  include Webrat::Matchers
  include Rspec::Matchers

  class ViewExampleController < ActionController::Base
    attr_accessor :controller_path
  end

  module ViewExtension
    def protect_against_forgery?; end
    def method_missing(name, *args)
      if controller.respond_to?(name) || Rails.application.routes.named_routes.helpers.include?(name)
        controller.__send__(name, *args)
      else
        super(name, *args)
      end
    end
  end

  def view
    @view ||= begin
                view = ActionView::Base.new(ActionController::Base.view_paths, assigns, controller)
                view.extend(ActionController::PolymorphicRoutes)
                view.extend(ViewExtension)
                view
              end
  end

  def assign(name, value)
    assigns[name] = value
  end

  def assigns
    @assigns ||= {}
  end

  def response
    @response
  end

  def file_to_render
    running_example.example_group.description
  end

  def controller_path
    parts = file_to_render.split('/')
    parts.pop
    parts.join('/')
  end

  def render
    @response = view.render :file => file_to_render
  end

  def method_missing(selector, *args)
    if Rails.application.routes.named_routes.helpers.include?(selector)
      controller.__send__(selector, *args)
    else
      super
    end
  end

  Rspec.configure do |c|
    c.include self, :example_group => { :file_path => /\bspec\/views\// }
  end

private

  def controller
    @controller ||= begin
                      controller = ViewExampleController.new
                      controller.controller_path = controller_path
                      controller.request = ActionDispatch::Request.new(Rack::MockRequest.env_for("/url"))
                      controller
                    end
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rspec-rails-2.0.0.beta.7 lib/rspec/rails/example/view_example_group.rb