Sha256: 2cf4bfbe0453f3f7676c37e61f4c8aa43a48fd3f3c970b22ab717731ff5738e1

Contents?: true

Size: 1.74 KB

Versions: 31

Compression:

Stored size: 1.74 KB

Contents

require "delegate"

module PactBroker
  module Pacts
    class SelectedPact < SimpleDelegator
      attr_reader :pact, :selectors

      def initialize(pact, selectors)
        super(pact)
        @pact = pact
        @selectors = selectors
      end

      def self.merge_by_pact_version_sha(selected_pacts)
        selected_pacts
          .group_by{ |p| [p.consumer_name, p.pact_version_sha] }
          .values
          .collect do | selected_pacts_for_pact_version_sha |
            SelectedPact.merge(selected_pacts_for_pact_version_sha)
          end
          .sort
      end

      def self.merge_by_consumer_version_number(selected_pacts)
        selected_pacts
          .group_by{ |p| [p.consumer_name, p.consumer_version_number] }
          .values
          .collect do | selected_pacts_for_consumer_version_number |
            SelectedPact.merge(selected_pacts_for_consumer_version_number)
          end
          .sort
      end

      def self.merge(selected_pacts)
        latest_selected_pact = selected_pacts.sort_by(&:consumer_version_order).last
        selectors = selected_pacts.collect(&:selectors).reduce(&:+).sort
        SelectedPact.new(latest_selected_pact.pact, selectors)
      end

      def tag_names_of_selectors_for_latest_pacts
        selectors.tag_names_of_selectors_for_latest_pacts
      end

      def branches_of_selectors_for_latest_pacts
        selectors.branches_of_selectors_for_latest_pacts
      end

      def overall_latest?
        selectors.overall_latest?
      end

      def latest_for_tag? potential_tag = nil
        selectors.latest_for_tag?(potential_tag)
      end

      def consumer_version_order
        pact.consumer_version.order
      end

      def <=> other
        pact <=> other.pact
      end
    end
  end
end

Version data entries

31 entries across 31 versions & 1 rubygems

Version Path
pact_broker-2.105.0 lib/pact_broker/pacts/selected_pact.rb
pact_broker-2.104.0 lib/pact_broker/pacts/selected_pact.rb
pact_broker-2.103.0 lib/pact_broker/pacts/selected_pact.rb
pact_broker-2.102.2 lib/pact_broker/pacts/selected_pact.rb
pact_broker-2.102.1 lib/pact_broker/pacts/selected_pact.rb
pact_broker-2.102.0 lib/pact_broker/pacts/selected_pact.rb
pact_broker-2.101.0 lib/pact_broker/pacts/selected_pact.rb
pact_broker-2.100.0 lib/pact_broker/pacts/selected_pact.rb
pact_broker-2.99.0 lib/pact_broker/pacts/selected_pact.rb
pact_broker-2.98.0 lib/pact_broker/pacts/selected_pact.rb
pact_broker-2.97.0 lib/pact_broker/pacts/selected_pact.rb
pact_broker-2.96.0 lib/pact_broker/pacts/selected_pact.rb
pact_broker-2.95.1 lib/pact_broker/pacts/selected_pact.rb
pact_broker-2.95.0 lib/pact_broker/pacts/selected_pact.rb
pact_broker-2.94.0 lib/pact_broker/pacts/selected_pact.rb
pact_broker-2.93.4 lib/pact_broker/pacts/selected_pact.rb
pact_broker-2.93.3 lib/pact_broker/pacts/selected_pact.rb
pact_broker-2.93.2 lib/pact_broker/pacts/selected_pact.rb
pact_broker-2.93.1 lib/pact_broker/pacts/selected_pact.rb
pact_broker-2.93.0 lib/pact_broker/pacts/selected_pact.rb