Sha256: 4ee551c0c0769a328eeda498bdcd61fcef5ebce43299b65c5181f5e8c1984161

Contents?: true

Size: 1.52 KB

Versions: 5

Compression:

Stored size: 1.52 KB

Contents

require 'dry-validation'
require 'pact_broker/hash_refinements'
require 'pact_broker/api/contracts/dry_validation_workarounds'
require 'pact_broker/api/contracts/dry_validation_predicates'

module PactBroker
  module Api
    module Contracts
      class VerifiablePactsJSONQuerySchema
        extend DryValidationWorkarounds
        using PactBroker::HashRefinements

        SCHEMA = Dry::Validation.Schema do
          configure do
            predicates(DryValidationPredicates)
          end
          optional(:providerVersionTags).maybe(:array?)
          optional(:consumerVersionSelectors).each do
            schema do
              # configure do
              #   def self.messages
              #     super.merge(en: { errors: { fallbackTagMustBeForLatest: 'can only be set if latest=true' }})
              #   end
              # end

              required(:tag).filled(:str?)
              optional(:latest).filled(included_in?: [true, false])
              optional(:fallbackTag).filled(:str?)

              # rule(fallbackTagMustBeForLatest: [:fallbackTag, :latest]) do | fallback_tag, latest |
              #   fallback_tag.filled?.then(latest.eql?(true))
              # end
            end
          end
          optional(:includePendingStatus).filled(included_in?: [true, false])
          optional(:includeWipPactsSince).filled(:date?)
        end

        def self.call(params)
          select_first_message(flatten_indexed_messages(SCHEMA.call(params&.symbolize_keys).messages(full: true)))
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
pact_broker-2.51.0 lib/pact_broker/api/contracts/verifiable_pacts_json_query_schema.rb
pact_broker-2.50.1 lib/pact_broker/api/contracts/verifiable_pacts_json_query_schema.rb
pact_broker-2.50.0 lib/pact_broker/api/contracts/verifiable_pacts_json_query_schema.rb
pact_broker-2.49.0 lib/pact_broker/api/contracts/verifiable_pacts_json_query_schema.rb
pact_broker-2.48.0 lib/pact_broker/api/contracts/verifiable_pacts_json_query_schema.rb