Sha256: 87de1dc43a39c2ac39831c2cdc0e0dbc7b41c2775e0838cd2f558a29447c0493

Contents?: true

Size: 951 Bytes

Versions: 1

Compression:

Stored size: 951 Bytes

Contents

# frozen_string_literal: true

module ApiSigv2
  module SpecSupport
    class PathBuilder
      attr_reader :controller, :action_name, :params

      PRIMARY_KEYS = [:id, :token].freeze

      def initialize(controller, action_name, params = {})
        @controller = controller
        @action_name = action_name
        @params = params
      end

      def path
        if params[:path].present?
          hash = params.delete(:path)
          url_options.merge!(hash)
          params.merge!(hash)
        end

        controller.url_for(url_options)
      end

      private

      def url_options
        @url_options ||= {
          action: action_name,
          controller: controller.controller_path,
          only_path: true
        }.merge(key_options || {})
      end

      def key_options
        key = (params.keys.map(&:to_sym) & PRIMARY_KEYS).first
        { key => params[key] } if params[key].present?
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
galetahub-api-sigv2-1.0.0 lib/api_sigv2/spec_support/path_builder.rb