class PactBroker::Api::Decorators::PactsForVerificationQueryDecorator

Public Instance Methods

from_hash(hash) click to toggle source
Calls superclass method
# File lib/pact_broker/api/decorators/pacts_for_verification_query_decorator.rb, line 55
def from_hash(hash)
  # This handles both the snakecase keys from the GET query and the camelcase JSON POST body
  result = super(hash&.snakecase_keys)

  result.consumer_version_selectors = split_out_deployed_or_released_selectors(result.consumer_version_selectors)
  if result.provider_version_branch
    result.consumer_version_selectors = set_branch_for_matching_branch_selectors(result.consumer_version_selectors, result.provider_version_branch)
  end

  if result.consumer_version_selectors && !result.consumer_version_selectors.is_a?(PactBroker::Pacts::Selectors)
    result.consumer_version_selectors = PactBroker::Pacts::Selectors.new(result.consumer_version_selectors)
  end
  result
end

Private Instance Methods

set_branch_for_matching_branch_selectors(consumer_version_selectors, provider_version_branch) click to toggle source
# File lib/pact_broker/api/decorators/pacts_for_verification_query_decorator.rb, line 72
def set_branch_for_matching_branch_selectors(consumer_version_selectors, provider_version_branch)
  consumer_version_selectors.collect do | consumer_version_selector |
    if consumer_version_selector[:matching_branch]
      consumer_version_selector[:branch] = provider_version_branch
      consumer_version_selector
    else
      consumer_version_selector
    end
  end
end
split_out_deployed_or_released_selectors(consumer_version_selectors) click to toggle source
# File lib/pact_broker/api/decorators/pacts_for_verification_query_decorator.rb, line 83
def split_out_deployed_or_released_selectors(consumer_version_selectors)
  consumer_version_selectors.flat_map do | selector |
    if selector.currently_deployed && selector.currently_supported
      [
        PactBroker::Pacts::Selector.new(selector.to_hash.without(:currently_supported)),
        PactBroker::Pacts::Selector.new(selector.to_hash.without(:currently_deployed))
      ]
    else
      [selector]
    end
  end
end