Sha256: 5a0b973d41545a9a0077b413d84757b34dc94a599d83388bb849adf7e600dc26

Contents?: true

Size: 1.72 KB

Versions: 37

Compression:

Stored size: 1.72 KB

Contents

require_relative 'base_decorator'
require_relative 'verifiable_pact_decorator'
require 'pact_broker/api/pact_broker_urls'
require 'pact_broker/hash_refinements'
require 'pact_broker/pacts/selector'
require 'pact_broker/pacts/selectors'

module PactBroker
  module Api
    module Decorators
      class VerifiablePactsQueryDecorator < BaseDecorator
        using PactBroker::HashRefinements

        collection :provider_version_tags, default: []

        collection :consumer_version_selectors, default: PactBroker::Pacts::Selectors.new, class: PactBroker::Pacts::Selector do
          property :tag
          property :latest,
            setter: ->(fragment:, represented:, **) {
              represented.latest = (fragment == 'true' || fragment == true)
            }
          property :fallback_tag
          property :consumer
        end

        property :include_pending_status, default: false,
          setter: ->(fragment:, represented:, **) {
            represented.include_pending_status = (fragment == 'true' || fragment == true)
          }

        property :include_wip_pacts_since, default: nil,
          setter: ->(fragment:, represented:, **) {
            represented.include_wip_pacts_since = fragment ? DateTime.parse(fragment) : nil
          }

        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)
          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
      end
    end
  end
end

Version data entries

37 entries across 37 versions & 1 rubygems

Version Path
pact_broker-2.76.2 lib/pact_broker/api/decorators/verifiable_pacts_query_decorator.rb
pact_broker-2.76.1 lib/pact_broker/api/decorators/verifiable_pacts_query_decorator.rb
pact_broker-2.76.0 lib/pact_broker/api/decorators/verifiable_pacts_query_decorator.rb
pact_broker-2.75.0 lib/pact_broker/api/decorators/verifiable_pacts_query_decorator.rb
pact_broker-2.74.1 lib/pact_broker/api/decorators/verifiable_pacts_query_decorator.rb
pact_broker-2.74.0 lib/pact_broker/api/decorators/verifiable_pacts_query_decorator.rb
pact_broker-2.73.0 lib/pact_broker/api/decorators/verifiable_pacts_query_decorator.rb
pact_broker-2.72.0 lib/pact_broker/api/decorators/verifiable_pacts_query_decorator.rb
pact_broker-2.71.0 lib/pact_broker/api/decorators/verifiable_pacts_query_decorator.rb
pact_broker-2.70.0 lib/pact_broker/api/decorators/verifiable_pacts_query_decorator.rb
pact_broker-2.69.0 lib/pact_broker/api/decorators/verifiable_pacts_query_decorator.rb
pact_broker-2.68.1 lib/pact_broker/api/decorators/verifiable_pacts_query_decorator.rb
pact_broker-2.68.0 lib/pact_broker/api/decorators/verifiable_pacts_query_decorator.rb
pact_broker-2.67.0 lib/pact_broker/api/decorators/verifiable_pacts_query_decorator.rb
pact_broker-2.66.0 lib/pact_broker/api/decorators/verifiable_pacts_query_decorator.rb
pact_broker-2.65.0 lib/pact_broker/api/decorators/verifiable_pacts_query_decorator.rb
pact_broker-2.64.0 lib/pact_broker/api/decorators/verifiable_pacts_query_decorator.rb
pact_broker-2.63.0 lib/pact_broker/api/decorators/verifiable_pacts_query_decorator.rb
pact_broker-2.62.0 lib/pact_broker/api/decorators/verifiable_pacts_query_decorator.rb
pact_broker-2.61.0 lib/pact_broker/api/decorators/verifiable_pacts_query_decorator.rb