class PactBroker::Api::Decorators::MatrixDecorator
Attributes
Public Class Methods
Source
# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 15 def initialize(query_results_with_deployment_status_summary) @query_results_with_deployment_status_summary = query_results_with_deployment_status_summary end
Public Instance Methods
Source
# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 36 def deployable query_results_with_deployment_status_summary.deployment_status_summary.deployable? end
Source
# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 40 def reason query_results_with_deployment_status_summary .deployment_status_summary .reasons .collect{ | reason | reason_decorator_class.new(reason).to_s } .join("\n") end
Source
# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 23 def to_hash(user_options:, **_other) { summary: { deployable: deployable, reason: reason }, notices: notices, matrix: matrix(user_options[:base_url]) }.tap do | hash | hash[:summary].merge!(query_results_with_deployment_status_summary.deployment_status_summary.counts) end end
Source
# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 19 def to_json(*args, **kwargs) to_hash(*args, **kwargs).to_json end
Private Instance Methods
Source
# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 107 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
Source
# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 83 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), # TODO delete this branchVersions: branches(line.consumer_version_branch_versions, base_url), environments: environments(line.consumer_version_deployed_versions, line.consumer_version_released_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
rubocop: enable Metrics/ParameterLists
Source
# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 119 def environment_decorator_class PactBroker::Api::Decorators::EmbeddedEnvironmentDecorator end
Source
# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 113 def environments(deployed_versions, released_versions, base_url) (deployed_versions + released_versions).sort_by(&:created_at).collect(&:environment).uniq.collect do | environment | environment_decorator_class.new(environment).to_hash(user_options: { base_url: base_url }) end end
Source
# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 64 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
Source
# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 73 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
rubocop: disable Metrics/ParameterLists
Source
# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 56 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
Source
# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 201 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
Source
# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 167 def pact_hash(line, base_url) { createdAt: format_date_time(line.pact_created_at), _links: { self: { href: pact_url(base_url, line) } } } end
Source
# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 137 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), # TODO delete this branchVersions: branches(line.provider_version_branch_versions, base_url), environments: environments(line.provider_version_deployed_versions, line.provider_version_released_versions, base_url), _links: { self: { href: version_url(base_url, provider_version) } }, tags: tags(line.provider_version_tags, base_url) } end hash end
Source
# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 52 def reason_decorator_class ReasonDecorator end
Source
# File lib/pact_broker/api/decorators/matrix_decorator.rb, line 178 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