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



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

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



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

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

#compare_name_asc(name1, name2) ⇒ Object



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

def compare_name_asc name1, name2
  name1 <=> name2
end

#compare_number_desc(number1, number2) ⇒ Object



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

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

#consumerObject



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

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

#consumer_versionObject



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

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)


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

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

#involves_pacticipant_with_name?(pacticipant_name) ⇒ Boolean

Returns:

  • (Boolean)


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

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

#pactObject



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

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



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

def pacticipant_names
  [consumer_name, provider_name]
end

#providerObject



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

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

#provider_versionObject



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

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.



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

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

#summaryObject



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

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

#to_sObject



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

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

#valuesObject



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

def values
  super.merge(success: success)
end

#verificationObject



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

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