class PactBroker::Api::Decorators::MatrixDecorator

Attributes

query_results_with_deployment_status_summary[R]

Public Class Methods

new(query_results_with_deployment_status_summary) click to toggle source
# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 14
def initialize(query_results_with_deployment_status_summary)
  @query_results_with_deployment_status_summary = query_results_with_deployment_status_summary
end

Public Instance Methods

deployable() click to toggle source
# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 35
def deployable
  query_results_with_deployment_status_summary.deployment_status_summary.deployable?
end
reason() click to toggle source
# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 39
def reason
  query_results_with_deployment_status_summary
    .deployment_status_summary
    .reasons
    .collect{ | reason | reason_decorator_class.new(reason).to_s }
    .join("\n")
end
to_hash(options) click to toggle source
# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 22
def to_hash(options)
  {
    summary: {
      deployable: deployable,
      reason: reason
    },
    notices: notices,
    matrix: matrix(options[:user_options][:base_url])
  }.tap do | hash |
    hash[:summary].merge!(query_results_with_deployment_status_summary.deployment_status_summary.counts)
  end
end
to_json(options) click to toggle source
# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 18
def to_json(options)
  to_hash(options).to_json
end

Private Instance Methods

branches(branch_versions, base_url) click to toggle source
# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 104
def branches(branch_versions, base_url)
  branch_versions.collect do | branch_version |
    PactBroker::Api::Decorators::EmbeddedBranchVersionDecorator.new(branch_version).to_hash(user_options: { base_url: base_url })
  end
end
consumer_hash(line, consumer, consumer_version, base_url) click to toggle source

rubocop: enable Metrics/ParameterLists

# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 82
def consumer_hash(line, consumer, consumer_version, base_url)
  {
    name: line.consumer_name,
    version: {
      number: line.consumer_version_number,
      branch: line.consumer_version_branch_versions.last&.branch_name,
      branches: branches(line.consumer_version_branch_versions, base_url),
      _links: {
        self: {
          href: version_url(base_url, consumer_version)
        }
      },
      tags: tags(line.consumer_version_tags, base_url)
    },
    _links: {
      self: {
        href: pacticipant_url(base_url, consumer)
      }
    }
  }
end
hash_for_row(line, base_url) click to toggle source
# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 63
def hash_for_row(line, base_url)
  provider = OpenStruct.new(name: line.provider_name)
  consumer = OpenStruct.new(name: line.consumer_name)
  consumer_version = OpenStruct.new(number: line.consumer_version_number, pacticipant: consumer)
  provider_version = line.provider_version_number ? OpenStruct.new(number: line.provider_version_number, pacticipant: provider) : nil
  line_hash(consumer, provider, consumer_version, provider_version, line, base_url)
end
line_hash(consumer, provider, consumer_version, provider_version, line, base_url) click to toggle source

rubocop: disable Metrics/ParameterLists

# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 72
def line_hash(consumer, provider, consumer_version, provider_version, line, base_url)
  {
    consumer: consumer_hash(line, consumer, consumer_version, base_url),
    provider: provider_hash(line, provider, provider_version, base_url),
    pact: pact_hash(line, base_url),
    verificationResult: verification_hash(line, base_url)
  }
end
matrix(base_url) click to toggle source
# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 55
def matrix(base_url)
  query_results_with_deployment_status_summary.considered_rows.collect do | line |
    hash_for_row(line, base_url)
  end + query_results_with_deployment_status_summary.ignored_rows.collect do | line |
    hash_for_row(line, base_url).merge(ignored: true)
  end
end
notices() click to toggle source
# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 186
def notices
  query_results_with_deployment_status_summary
    .deployment_status_summary
    .reasons
    .collect{ | reason | { type: reason.type, text: reason_decorator_class.new(reason).to_s } }
end
pact_hash(line, base_url) click to toggle source
# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 152
def pact_hash(line, base_url)
  {
    createdAt: format_date_time(line.pact_created_at),
    _links: {
      self: {
        href: pact_url(base_url, line)
      }
    }
  }
end
provider_hash(line, provider, provider_version, base_url) click to toggle source
# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 124
def provider_hash(line, provider, provider_version, base_url)
  hash = {
    name: line.provider_name,
    version: nil,
    _links: {
      self: {
        href: pacticipant_url(base_url, provider)
      }
    }
  }

  if !line.provider_version_number.nil?
    hash[:version] = {
      number: line.provider_version_number,
      branch: line.provider_version_branch_versions.last&.branch_name,
      branches: branches(line.provider_version_branch_versions, base_url),
      _links: {
        self: {
          href: version_url(base_url, provider_version)
        }
      },
      tags: tags(line.provider_version_tags, base_url)
    }
  end

  hash
end
reason_decorator_class() click to toggle source
# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 51
def reason_decorator_class
  ReasonDecorator
end
tags(tags, base_url) click to toggle source
# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 110
def tags(tags, base_url)
  tags.sort_by(&:created_at).collect do | tag |
    {
      name: tag.name,
      latest: tag.latest?,
      _links: {
        self: {
          href: tag_url(base_url, tag)
        }
      }
    }
  end
end
verification_hash(line, base_url) click to toggle source
# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 163
def verification_hash(line, base_url)
  if !line.success.nil?
    url_params = {
      consumer_name: line.consumer_name,
      provider_name: line.provider_name,
      pact_version_sha: line.pact_version_sha,
      consumer_version_number: line.consumer_version_number,
      verification_number: line.verification_number
    }
    {
      success: line.success,
      verifiedAt: format_date_time(line.verification_executed_at),
      _links: {
        self: {
          href: verification_url_from_params(url_params, base_url)
        }
      }
    }
  else
    nil
  end
end