Sha256: 0a01f034f206e9764b1ace910726c07cd3a4b11f61129577fae7241bd7f4e6bc

Contents?: true

Size: 1.13 KB

Versions: 4

Compression:

Stored size: 1.13 KB

Contents

module PactBroker
  module Models

    class Relationship

      attr_reader :consumer, :provider

      def initialize consumer, provider
        @consumer = consumer
        @provider = provider
      end

      def self.create consumer, provider
        new consumer, provider
      end

      def eq? other
        Relationship === other && other.consumer == consumer && other.provider == provider
      end

      def == other
        eq?(other)
      end

      def consumer_name
        consumer.name
      end

      def provider_name
        provider.name
      end

      def pacticipants
        [consumer, provider]
      end

      def connected? other
        (self.to_a & other.to_a).any?
      end

      def include? pacticipant
        pacticipant.id == consumer.id || pacticipant.id == provider.id
      end

      def <=> other
        comp = consumer_name <=> other.consumer_name
        return comp unless comp == 0
        provider_name <=> other.provider_name
      end

      def to_s
        "Relationship between #{consumer_name} and #{provider_name}"
      end

      def to_a
        [consumer, provider]
      end

    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
pact_broker-1.3.1 lib/pact_broker/models/relationship.rb
pact_broker-1.3.0 lib/pact_broker/models/relationship.rb
pact_broker-1.2.0 lib/pact_broker/models/relationship.rb
pact_broker-1.1.0 lib/pact_broker/models/relationship.rb