Class: PactBroker::Pacts::PactVersion

Inherits:
Object
  • Object
show all
Defined in:
lib/pact_broker/pacts/pact_version.rb

Instance Method Summary collapse

Instance Method Details

#consumer_nameObject



95
96
97
# File 'lib/pact_broker/pacts/pact_version.rb', line 95

def consumer_name
  pact_publications.last.consumer.name
end

#latest_consumer_version_numberObject



107
108
109
# File 'lib/pact_broker/pacts/pact_version.rb', line 107

def latest_consumer_version_number
  latest_consumer_version.number
end

#latest_pact_publicationObject



99
100
101
102
103
104
# File 'lib/pact_broker/pacts/pact_version.rb', line 99

def latest_pact_publication
  PactBroker::Pacts::PactPublication
    .for_pact_version_id(id)
    .remove_overridden_revisions_from_complete_query
    .latest || PactBroker::Pacts::PactPublication.for_pact_version_id(id).latest
end

#nameObject



87
88
89
# File 'lib/pact_broker/pacts/pact_version.rb', line 87

def name
  "Pact between #{consumer_name} and #{provider_name}"
end

#provider_nameObject



91
92
93
# File 'lib/pact_broker/pacts/pact_version.rb', line 91

def provider_name
  pact_publications.last.provider.name
end

#select_provider_tags_with_successful_verifications(tags) ⇒ Object



137
138
139
140
141
142
143
144
145
# File 'lib/pact_broker/pacts/pact_version.rb', line 137

def select_provider_tags_with_successful_verifications(tags)
  tags.select do | tag |
    PactVersion.where(Sequel[:pact_versions][:id] => id)
      .join_successful_verifications
      .join_provider_versions
      .join_provider_version_tags_for_tag(tag)
      .any?
  end
end

#select_provider_tags_with_successful_verifications_from_another_branch_from_before_this_branch_created(tags) ⇒ Object



111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# File 'lib/pact_broker/pacts/pact_version.rb', line 111

def select_provider_tags_with_successful_verifications_from_another_branch_from_before_this_branch_created(tags)
  tags.select do | tag |
    first_tag_with_name = PactBroker::Domain::Tag.where(pacticipant_id: provider_id, name: tag).order(:created_at).first

    verifications_join = {
      Sequel[:verifications][:pact_version_id] => Sequel[:pact_versions][:id],
      Sequel[:verifications][:success] => true
    }
    tags_join = {
      Sequel[:tags][:version_id] => Sequel[:versions][:id],
    }
    query = PactVersion.where(Sequel[:pact_versions][:id] => id)
      .join(:verifications, verifications_join)
      .join(:versions, Sequel[:versions][:id] => Sequel[:verifications][:provider_version_id])
      .join(:tags, tags_join) do
        Sequel.lit("tags.name != ?", tag)
      end

    if first_tag_with_name
      query = query.where { Sequel[:verifications][:created_at] < first_tag_with_name.created_at }
    end

    query.any?
  end
end

#set_interactions_and_messages_counts!Object



153
154
155
156
157
158
159
160
161
# File 'lib/pact_broker/pacts/pact_version.rb', line 153

def set_interactions_and_messages_counts!
  if interactions_count.nil? || messages_count.nil?
    content_object = PactBroker::Pacts::Content.from_json(content)
    update(
      messages_count: content_object.messages&.count || 0,
      interactions_count: content_object.interactions&.count || 0
    )
  end
end

#verified_successfully_by_any_provider_version?Boolean

Returns:

  • (Boolean)


147
148
149
150
151
# File 'lib/pact_broker/pacts/pact_version.rb', line 147

def verified_successfully_by_any_provider_version?
  PactVersion.where(Sequel[:pact_versions][:id] => id)
    .join_successful_verifications
    .any?
end