Sha256: 0d5ed3c35cb869c5986849e3b753b44fcec43fab572008f75353f5c9d9f85ef6

Contents?: true

Size: 1.27 KB

Versions: 3

Compression:

Stored size: 1.27 KB

Contents

require_relative 'base_decorator'
require_relative 'verifiable_pact_decorator'
require 'pact_broker/api/pact_broker_urls'
require 'pact_broker/hash_refinements'

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

        collection :provider_version_tags, default: []

        collection :consumer_version_selectors, default: [], class: OpenStruct do
          property :tag
          property :latest,
            setter: ->(fragment:, represented:, **) {
              represented.latest = (fragment == 'true' || fragment == true)
            }
        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
          super(hash&.snakecase_keys)
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
pact_broker-2.47.1 lib/pact_broker/api/decorators/verifiable_pacts_query_decorator.rb
pact_broker-2.47.0 lib/pact_broker/api/decorators/verifiable_pacts_query_decorator.rb
pact_broker-2.46.0 lib/pact_broker/api/decorators/verifiable_pacts_query_decorator.rb