lib/draper/test/rspec_integration.rb in draper-1.0.0.beta3 vs lib/draper/test/rspec_integration.rb in draper-1.0.0.beta4

- old
+ new

@@ -1,22 +1,67 @@ module Draper module DecoratorExampleGroup extend ActiveSupport::Concern included { metadata[:type] = :decorator } end + + module DeviseHelper + def sign_in(user) + warden.stub :authenticate! => user + controller.stub :current_user => user + user + end + + private + + def request + @request ||= ::ActionDispatch::TestRequest.new + end + + def controller + return @controller if @controller + @controller = ApplicationController.new + @controller.request = request + ::Draper::ViewContext.current = @controller.view_context + @controller + end + + # taken from Devise's helper but uses the request method instead of @request + # and we don't really need the rest of their helper + def warden + @warden ||= begin + manager = Warden::Manager.new(nil) do |config| + config.merge! Devise.warden_config + end + request.env['warden'] = Warden::Proxy.new(request.env, manager) + end + end + end end RSpec.configure do |config| # Automatically tag specs in specs/decorators as type: :decorator config.include Draper::DecoratorExampleGroup, :type => :decorator, :example_group => { :file_path => /spec[\\\/]decorators/ } + if defined?(Devise) + config.include Draper::DeviseHelper, :type => :decorator + end end -if defined?(Capybara) - require 'capybara/rspec/matchers' +module Draper + module RSpec + class Railtie < Rails::Railtie + config.after_initialize do |app| + if defined?(Capybara) + require 'capybara/rspec/matchers' - RSpec.configure do |config| - config.include Capybara::RSpecMatchers, :type => :decorator + ::RSpec.configure do |config| + config.include Capybara::RSpecMatchers, :type => :decorator + end + end + end + end end end +