Class: PactBroker::Api::Decorators::RelationshipsCsvDecorator

Inherits:
Object
  • Object
show all
Defined in:
lib/pact_broker/api/decorators/relationships_csv_decorator.rb

Instance Method Summary collapse

Constructor Details

#initialize(pacts) ⇒ RelationshipsCsvDecorator

Returns a new instance of RelationshipsCsvDecorator.



12
13
14
15
# File 'lib/pact_broker/api/decorators/relationships_csv_decorator.rb', line 12

def initialize pacts
  @pacts = pacts
  @relationships = pacts.collect{|pact| PactBroker::Domain::Relationship.new(pact.consumer,pact.provider)}
end

Instance Method Details

#pacticipant_array(pacticipant, order) ⇒ Object



43
44
45
# File 'lib/pact_broker/api/decorators/relationships_csv_decorator.rb', line 43

def pacticipant_array pacticipant, order
  [pacticipant.id, pacticipant.name, 1, 1, 0, order]
end

#to_csvObject



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/pact_broker/api/decorators/relationships_csv_decorator.rb', line 17

def to_csv
  hash = {}
  pacticipants = @relationships.collect{|r| r.pacticipants}.flatten.uniq

  @relationships.each do | relationship |
    hash[relationship.consumer.id] ||= pacticipant_array(relationship.consumer, hash.size + 1)
    hash[relationship.provider.id] ||= pacticipant_array(relationship.provider, hash.size + 1)
    hash[relationship.consumer.id] << relationship.provider.id
  end

  max_length = hash.values.collect{|array| array.size}.max

  hash.values.each do | array |
    while array.size < max_length
      array << 0
    end
  end

  CSV.generate do |csv|
    hash.values.each do | array |
      csv << array
    end
  end

end