Sha256: 5831397b33da284537c04241b51bf38234d56e29deb4428642a8cd3a5865ead0

Contents?: true

Size: 1.11 KB

Versions: 9

Compression:

Stored size: 1.11 KB

Contents

require "dry-validation"
require "pact_broker/api/contracts/dry_validation_macros"
require "pact_broker/api/contracts/dry_validation_methods"
require "pact_broker/api/contracts/dry_validation_errors_formatter"
require "pact_broker/messages"
require "pact_broker/hash_refinements"

module PactBroker
  module Api
    module Contracts
      class BaseContract < Dry::Validation::Contract
        include DryValidationMethods
        extend DryValidationErrorsFormatter

        using PactBroker::HashRefinements

        # The entry method for all the Dry::Validation::Contract classes
        # eg. MyContract.call(params)
        # It takes the params (doesn't matter if they're string or symbol keys)
        # executes the dry-validation validation, and formats the errors into the Pactflow format.
        #
        # @param [Hash] the parameters to validate
        # @return [Hash] the validation errors to display to the user
        def self.call(params)
          params_to_validate = params.respond_to?(:symbolize_keys) ? params.symbolize_keys : params
          new.call(params_to_validate)
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
pact_broker-2.114.0 lib/pact_broker/api/contracts/base_contract.rb
pact_broker-2.113.2 lib/pact_broker/api/contracts/base_contract.rb
pact_broker-2.113.1 lib/pact_broker/api/contracts/base_contract.rb
pact_broker-2.113.0 lib/pact_broker/api/contracts/base_contract.rb
pact_broker-2.112.0 lib/pact_broker/api/contracts/base_contract.rb
pact_broker-2.111.0 lib/pact_broker/api/contracts/base_contract.rb
pact_broker-2.109.1 lib/pact_broker/api/contracts/base_contract.rb
pact_broker-2.109.0 lib/pact_broker/api/contracts/base_contract.rb
pact_broker-2.108.0 lib/pact_broker/api/contracts/base_contract.rb