Sha256: b20e86f8ea207ad1eb56dd88767abf647dc7ba9645cf0a2e988923a60e5b7a4d

Contents?: true

Size: 1.96 KB

Versions: 15

Compression:

Stored size: 1.96 KB

Contents

require 'active_support/core_ext/object'

module Restspec
  module RSpec
    module ApiHelpers
      def read_endpoint(endpoint_full_name = nil, options = {})
        call_endpoint(endpoint_full_name, options).read_body
      end

      def call_endpoint(endpoint_full_name = nil, body: {},
                                            url_params: {},
                                            query_params: {},
                                            merge_example_params: true,
                                            execution_method: :execute)
        endpoint = find_endpoint_in_test_context(endpoint_full_name)

        if merge_example_params
          query_params = (@query_params || {}).merge(query_params)
          url_params = (@url_params || {}).merge(url_params)
        end

        endpoint.send(execution_method, body: body, url_params: url_params, query_params: query_params)
      end

      def find_endpoint_in_test_context(endpoint_full_name)
        if endpoint_full_name.present?
          test_context = self.class

          test_context.metadata[:endpoints] ||= {}
          test_context.metadata[:endpoints][endpoint_full_name] ||= begin
            Restspec::EndpointStore.get(endpoint_full_name)
          end
        else
          endpoint
        end
      end

      def read_endpoint_once(endpoint_full_name = nil, options = {})
        call_endpoint_once(endpoint_full_name, options).read_body
      end

      def call_endpoint_once(endpoint_full_name = nil, options = {})
        call_endpoint(endpoint_full_name, options.merge(:execution_method => :execute_once))
      end

      def execute_endpoint!
        execute_endpoint_lambda.call
        response
      end

      def schema_example(schema_name = nil)
        if schema_name.nil? && endpoint.present?
          schema_name = endpoint.schema_name
        end

        Restspec.example_for(schema_name)
      end

      def self.included(base)
        base.extend(self)
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
restspec-0.3.2 lib/restspec/rspec/api_helpers.rb
restspec-0.3.1 lib/restspec/rspec/api_helpers.rb
restspec-0.3.0 lib/restspec/rspec/api_helpers.rb
restspec-0.2.6 lib/restspec/rspec/api_helpers.rb
restspec-0.2.5 lib/restspec/rspec/api_helpers.rb
restspec-0.2.4 lib/restspec/rspec/api_helpers.rb
restspec-0.2.3 lib/restspec/rspec/api_helpers.rb
restspec-0.2.2 lib/restspec/rspec/api_helpers.rb
restspec-0.2.1 lib/restspec/rspec/api_helpers.rb
restspec-0.2 lib/restspec/rspec/api_helpers.rb
restspec-0.1 lib/restspec/rspec/api_helpers.rb
restspec-0.0.4 lib/restspec/rspec/api_helpers.rb
restspec-0.0.3 lib/restspec/rspec/api_helpers.rb
restspec-0.0.2 lib/restspec/rspec/api_helpers.rb
restspec-0.0.1 lib/restspec/rspec/api_helpers.rb