Sha256: e0a1cf2fc9990d16b4346d907e48239e3c27c394d8d3c10aec6a6f2922f1b6b7

Contents?: true

Size: 1.21 KB

Versions: 2

Compression:

Stored size: 1.21 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

      # might actually be, but this code doesn't know it.
      def overall_latest?
        selectors.any?(&:overall_latest?)
      end

      def latest_for_tag?
        selectors.any?(&:latest_for_tag?)
      end

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

      def merge(other)
        if pact_version_sha != other.pact_version_sha
          raise "These two pacts do not have the same pact_version_sha. They cannot be merged. #{pact_version_sha} and #{other.pact_version_sha}"
        else
          SelectedPact.new()
        end
      end

      def tag_names_for_selectors_for_latest_pacts
        selectors.select(&:latest_for_tag?).collect(&:tag)
      end

      def consumer_version_order
        pact.consumer_version.order
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
pact_broker-2.47.1 lib/pact_broker/pacts/selected_pact.rb
pact_broker-2.47.0 lib/pact_broker/pacts/selected_pact.rb