lib/pact_broker/ui/controllers/matrix.rb in pact_broker-2.52.2 vs lib/pact_broker/ui/controllers/matrix.rb in pact_broker-2.53.0

- old
+ new

@@ -1,10 +1,12 @@ require 'pact_broker/ui/controllers/base_controller' require 'pact_broker/ui/view_models/matrix_lines' require 'pact_broker/matrix/unresolved_selector' require 'pact_broker/matrix/parse_query' require 'pact_broker/logging' +require 'pact_broker/api/pact_broker_urls' + require 'haml' module PactBroker module UI module Controllers @@ -28,10 +30,11 @@ locals[:options] = create_options_model(options) errors = matrix_service.validate_selectors(selectors) if errors.empty? lines = matrix_service.find(selectors, options) locals[:lines] = PactBroker::UI::ViewDomain::MatrixLines.new(lines) + locals[:badge_url] = matrix_badge_url(selectors, lines) else locals[:errors] = errors end end rescue StandardError => e @@ -50,11 +53,12 @@ lines: lines, title: "The Matrix", consumer_name: params[:consumer_name], provider_name: params[:provider_name], selectors: create_selector_objects(selectors), - options: create_options_model(options) + options: create_options_model(options), + badge_url: nil } haml :'matrix/show', {locals: locals, layout: :'layouts/main'} end def create_selector_objects(selector_hashes) @@ -73,9 +77,19 @@ o = OpenStruct.new(options) o.cvpv_checked = o.latestby == 'cvpv' ? 'checked' : nil o.cvp_checked = o.latestby == 'cvp' ? 'checked' : nil o.all_rows_checked = o.latestby.nil? ? 'checked' : nil o + end + + def matrix_badge_url(selectors, lines) + if lines.any? && selectors.size == 2 && selectors.all?{ | selector| selector.latest_for_pacticipant_and_tag? } + consumer_selector = selectors.find{ | selector| selector.pacticipant_name == lines.first.consumer_name } + provider_selector = selectors.find{ | selector| selector.pacticipant_name == lines.first.provider_name } + if consumer_selector && provider_selector + PactBroker::Api::PactBrokerUrls.matrix_badge_url_for_selectors(consumer_selector, provider_selector, base_url) + end + end end end end end end