Class: PactBroker::Api::Contracts::VerifiablePactsQuerySchema

Inherits:
Object
  • Object
show all
Defined in:
lib/pact_broker/api/contracts/verifiable_pacts_query_schema.rb

Constant Summary collapse

SCHEMA =
Dry::Validation.Schema do
  optional(:provider_version_tags).maybe(:array?)
  # optional(:exclude_other_pending).filled(included_in?: ["true", "false"])
  optional(:consumer_version_selectors).each do
    schema do
      required(:tag).filled(:str?)
      optional(:latest).filled(included_in?: ["true", "false"])
    end
  end
end

Class Method Summary collapse

Class Method Details

.call(params) ⇒ Object



18
19
20
# File 'lib/pact_broker/api/contracts/verifiable_pacts_query_schema.rb', line 18

def self.call(params)
  select_first_message(flatten_index_messages(SCHEMA.call(params).messages(full: true)))
end

.flatten_index_messages(messages) ⇒ Object



28
29
30
31
32
33
34
35
36
37
# File 'lib/pact_broker/api/contracts/verifiable_pacts_query_schema.rb', line 28

def self.flatten_index_messages(messages)
  if messages[:consumer_version_selectors]
    new_messages = messages[:consumer_version_selectors].collect do | index, value |
      value.values.flatten.collect { | text | "#{text} at index #{index}"}
    end.flatten
    messages.merge(consumer_version_selectors: new_messages)
  else
    messages
  end
end

.select_first_message(messages) ⇒ Object



22
23
24
25
26
# File 'lib/pact_broker/api/contracts/verifiable_pacts_query_schema.rb', line 22

def self.select_first_message(messages)
  messages.each_with_object({}) do | (key, value), new_messages |
    new_messages[key] = [value.first]
  end
end