Sha256: 117a3cda8a8c6aa19d92903723e653756196d7e002255d9efbacba76e57fad01

Contents?: true

Size: 1.39 KB

Versions: 2

Compression:

Stored size: 1.39 KB

Contents

require "rack/test"
require "inheritable_accessors/inheritable_hash_accessor"
require "serial_spec/request_response/helpers"

module SerialSpec
  module RequestResponse
    extend ActiveSupport::Concern
    include Rack::Test::Methods
    include InheritableAccessors::InheritableHashAccessor
    include Helpers

    included do
      include ::SerialSpec::RequestResponse::DSL
      extend  ::SerialSpec::RequestResponse::DSL

      inheritable_hash_accessor :request_opts
      inheritable_hash_accessor :request_params
      inheritable_hash_accessor :request_envs
    end

    def perform_request!
      env = request_envs.merge(:method => request_method, :params => request_params.to_hash)
      env = current_session.send :env_for, request_path, env

      current_session.send :process_request, request_path, env
    end

    module DSL

      def request_path(new_path=nil)
        if new_path
          request_opts[:path] = new_path
        else
          path = request_opts[:path]
          return path if path
          raise "You must configure a path"
        end
      end

      # GET, POST, PUT, DELETE, OPTIONS, HEAD
      def request_method(new_method=nil)
        if new_method
          request_opts[:method] = new_method
        else
          methud = request_opts[:method]
          return methud if methud
          raise "You must configure a request method"
        end
      end

    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
serial-spec-0.2.1 lib/serial_spec/request_response.rb
serial-spec-0.2.0 lib/serial_spec/request_response.rb