Sha256: f511a9e8bcf0058643e0464d5eea35865f590825bbbdcd0bcded1b73c8d6ec71

Contents?: true

Size: 1.67 KB

Versions: 1

Compression:

Stored size: 1.67 KB

Contents

module RSpec
  module Rails
    module Controller
      module Macros
    
        def self.included(base)
          base.extend(ClassMethods)
        end
    
        module ClassMethods
    
          def request(method, action, aparams = {}, &block)
            description = "#{method.to_s.upcase} ##{action.to_s}"
            describe description do
              let(:params) { aparams }
              define_method :action! do
                p = params
                p = instance_eval(&p) if p.is_a?(Proc)
                send method, action, p
              end
              define_method(:run_request!) { action! } # deprecated
              instance_eval &block
            end
          end
          
          def request!(method, action, params = {}, &block)
            request(method, action, params) do
              action! &block
            end
          end

          def action!(&block)
            describe "action" do
              before(:each) { action! }
              instance_eval &block
            end
          end

          def params(params = {}, &block)
            if block
              let(:params) { block }
            else
              let(:params) { params }
            end
          end
    
          [:get, :post, :put, :delete, :head].each do |method|
            module_eval <<-EOF, __FILE__, __LINE__
              def #{method}(action, params = {}, &block)
                request(#{method.inspect}, action, params, &block)
              end
              def #{method}!(action, params = {}, &block)
                request!(#{method.inspect}, action, params, &block)
              end
            EOF
          end

        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rspec-rails-controller-0.1.2 lib/rspec/rails/controller/macros.rb