Class: PactBroker::Matrix::Row

Inherits:
Object
  • Object
show all
Defined in:
lib/pact_broker/matrix/row.rb

Direct Known Subclasses

HeadRow

Constant Summary collapse

TP_COLS =

Used when using table_print to output query results

[ :consumer_version_number, :pact_revision_number, :provider_version_number, :verification_number]

Instance Method Summary collapse

Instance Method Details

#<=>(other) ⇒ Object

Add logic for ignoring case



200
201
202
203
204
205
206
207
208
209
210
211
# File 'lib/pact_broker/matrix/row.rb', line 200

def <=> other
  comparisons = [
    compare_name_asc(consumer_name, other.consumer_name),
    compare_number_desc(consumer_version_order, other.consumer_version_order),
    compare_number_desc(pact_revision_number, other.pact_revision_number),
    compare_name_asc(provider_name, other.provider_name),
    compare_number_desc(provider_version_order, other.provider_version_order),
    compare_number_desc(verification_id, other.verification_id)
  ]

  comparisons.find{|c| c != 0 } || 0
end

#[](key) ⇒ Object

Temporary method while we transition from returning Hashes to return Matrix objects from the repository find methods Need to make the object act as a hash and an object



138
139
140
141
142
143
144
# File 'lib/pact_broker/matrix/row.rb', line 138

def [] key
  if key == :provider_version_tags || key == :consumer_version_tags
    send(key)
  else
    super
  end
end

#compare_name_asc(name1, name2) ⇒ Object



213
214
215
# File 'lib/pact_broker/matrix/row.rb', line 213

def compare_name_asc name1, name2
  name1 <=> name2
end

#compare_number_desc(number1, number2) ⇒ Object



221
222
223
224
225
226
227
228
229
# File 'lib/pact_broker/matrix/row.rb', line 221

def compare_number_desc number1, number2
  if number1 && number2
    number2 <=> number1
  elsif number1
    1
  else
    -1
  end
end

#consumerObject



150
151
152
# File 'lib/pact_broker/matrix/row.rb', line 150

def consumer
  @consumer ||= OpenStruct.new(name: consumer_name, id: consumer_id)
end

#consumer_versionObject



158
159
160
# File 'lib/pact_broker/matrix/row.rb', line 158

def consumer_version
  @consumer_version ||= OpenStruct.new(number: consumer_version_number, order: consumer_version_order, id: consumer_version_id, pacticipant: consumer)
end

#eql?(obj) ⇒ Boolean

Need to overwrite eql? from lib/sequel/model/base.rb because it uses @values instead of self.values so the success boolean/integer problem mentioned above screws things up

Returns:

  • (Boolean)


249
250
251
# File 'lib/pact_broker/matrix/row.rb', line 249

def eql?(obj)
  (obj.class == model) && (obj.values == values)
end

#involves_pacticipant_with_name?(pacticipant_name) ⇒ Boolean

Returns:

  • (Boolean)


257
258
259
# File 'lib/pact_broker/matrix/row.rb', line 257

def involves_pacticipant_with_name?(pacticipant_name)
  pacticipant_name.include?(pacticipant_name)
end

#pactObject



168
169
170
171
172
173
174
175
176
177
178
# File 'lib/pact_broker/matrix/row.rb', line 168

def pact
  @pact ||= OpenStruct.new(
    consumer: consumer,
    provider: provider,
    consumer_version: consumer_version,
    consumer_version_number: consumer_version_number,
    created_at: pact_created_at,
    revision_number: pact_revision_number,
    pact_version_sha: pact_version_sha
  )
end

#pacticipant_namesObject



253
254
255
# File 'lib/pact_broker/matrix/row.rb', line 253

def pacticipant_names
  [consumer_name, provider_name]
end

#providerObject



154
155
156
# File 'lib/pact_broker/matrix/row.rb', line 154

def provider
  @provider ||= OpenStruct.new(name: provider_name, id: provider_id)
end

#provider_versionObject



162
163
164
165
166
# File 'lib/pact_broker/matrix/row.rb', line 162

def provider_version
  if provider_version_number
    @provider_version ||= OpenStruct.new(number: provider_version_number, order: provider_version_order, id: provider_version_id, pacticipant: provider)
  end
end

#successObject

For some reason, with MySQL, the success column value comes back as an integer rather than a boolean for the latest_matrix view (but not the matrix view!) Maybe something to do with the union? Haven’t investigated as this is an easy enough fix.



236
237
238
239
# File 'lib/pact_broker/matrix/row.rb', line 236

def success
  value = super
  value.nil? ? nil : value == true || value == 1
end

#summaryObject



146
147
148
# File 'lib/pact_broker/matrix/row.rb', line 146

def summary
  "#{consumer_name}#{consumer_version_number} #{provider_name}#{provider_version_number || '?'} (r#{pact_revision_number}n#{verification_number || '?'})"
end

#to_sObject



217
218
219
# File 'lib/pact_broker/matrix/row.rb', line 217

def to_s
  "#{consumer_name} #{consumer_version_number} #{provider_name} #{provider_version_number} #{success}"
end

#valuesObject



241
242
243
# File 'lib/pact_broker/matrix/row.rb', line 241

def values
  super.merge(success: success)
end

#verificationObject



180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
# File 'lib/pact_broker/matrix/row.rb', line 180

def verification
  if verification_executed_at
    @latest_verification ||= OpenStruct.new(
      id: verification_id,
      success: success,
      number: verification_number,
      execution_date: verification_executed_at,
      created_at: verification_executed_at,
      provider_version_number: provider_version_number,
      provider_version_order: provider_version_order,
      build_url: verification_build_url,
      provider_version: provider_version,
      consumer_name: consumer_name,
      provider_name: provider_name,
      pact_version_sha: pact_version_sha
    )
  end
end