Sha256: a499e133be7ffbef45ba42035b8d2d0a2b8f20dea8c7c93760d5ee39ad6802fe

Contents?: true

Size: 1.79 KB

Versions: 10

Compression:

Stored size: 1.79 KB

Contents

module USCoreTestKit
  module GranularScope

    def granular_scopes
      @granular_scopes ||=
        received_scopes
          .split(' ')
          .select do |scope|
            (scope.start_with?("patient/#{resource_type}") || scope.start_with?("user/#{resource_type}")) &&
              scope.include?('?')
          end
    end

    def granular_scope_search_params
      @granular_scope_search_params ||=
        granular_scopes.map do |scope|
          _, granular_scope = scope.split('?')
          name, value = granular_scope.split('=')

          {
            name:,
            value:
          }
        end
    end

    def resource_specific_granular_scope_search_params
      @resource_specific_granular_scope_search_params ||=
        granular_scopes.select {|scope| scope.include?(resource_type)}.map do |scope|
          _, granular_scope = scope.split('?')
          name, value = granular_scope.split('=')
          _, value = value.split('|')
          {
            name:,
            value:
          }
      end
    end

    def previous_request_resources
      first_request = previous_requests.first
      next_page_url = nil
      hash = Hash.new { |hash, key| hash[key] = [] }
      previous_requests.each_with_object(hash) do |request, request_resource_hash|
        request_resources =
          if request.status == 200
            request.resource.entry.map(&:resource).select { |resource| resource.resourceType == resource_type }
          else
            []
          end

        first_request = request if request.url != next_page_url

        request_resource_hash[first_request].concat(request_resources)

        next if request.resource&.resourceType != 'Bundle'

        next_page_url = request.resource&.link&.find { |link| link.relation == 'next' }&.url
      end
    end

  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
us_core_test_kit-0.10.0 lib/us_core_test_kit/granular_scope.rb
us_core_test_kit-0.9.3 lib/us_core_test_kit/granular_scope.rb
us_core_test_kit-0.9.2 lib/us_core_test_kit/granular_scope.rb
us_core_test_kit-0.9.1 lib/us_core_test_kit/granular_scope.rb
us_core_test_kit-0.9.0 lib/us_core_test_kit/granular_scope.rb
us_core_test_kit-0.8.2 lib/us_core_test_kit/granular_scope.rb
us_core_test_kit-0.8.1 lib/us_core_test_kit/granular_scope.rb
us_core_test_kit-0.8.0 lib/us_core_test_kit/granular_scope.rb
us_core_test_kit-0.7.2 lib/us_core_test_kit/granular_scope.rb
us_core_test_kit-0.7.1 lib/us_core_test_kit/granular_scope.rb