From 9a21e1052c51e603258f05cae013c11d7df9c75b Mon Sep 17 00:00:00 2001 From: Beth Skurrie Date: Thu, 8 Feb 2018 09:50:49 +1100 Subject: [PATCH] feat: abbreviate git shas in index and matrix UIs --- lib/pact_broker/ui/view_models/index_item.rb | 5 +++-- lib/pact_broker/ui/view_models/matrix_line.rb | 9 ++++++++ lib/pact_broker/ui/views/matrix/show.haml | 4 ++-- lib/pact_broker/versions/abbreviate_number.rb | 14 ++++++++++++ .../versions/abbreviate_number_spec.rb | 22 +++++++++++++++++++ 5 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 lib/pact_broker/versions/abbreviate_number.rb create mode 100644 spec/lib/pact_broker/versions/abbreviate_number_spec.rb diff --git a/lib/pact_broker/ui/view_models/index_item.rb b/lib/pact_broker/ui/view_models/index_item.rb index 80b58abc0..bb364995a 100644 --- a/lib/pact_broker/ui/view_models/index_item.rb +++ b/lib/pact_broker/ui/view_models/index_item.rb @@ -1,6 +1,7 @@ require 'pact_broker/api/pact_broker_urls' require 'pact_broker/ui/helpers/url_helper' require 'pact_broker/date_helper' +require 'pact_broker/versions/abbreviate_number' module PactBroker module UI @@ -22,11 +23,11 @@ def provider_name end def consumer_version_number - @relationship.consumer_version_number + PactBroker::Versions::AbbreviateNumber.call(@relationship.consumer_version_number) end def provider_version_number - @relationship.provider_version_number + PactBroker::Versions::AbbreviateNumber.call(@relationship.provider_version_number) end def tag_names diff --git a/lib/pact_broker/ui/view_models/matrix_line.rb b/lib/pact_broker/ui/view_models/matrix_line.rb index d90115ff1..26f7b927a 100644 --- a/lib/pact_broker/ui/view_models/matrix_line.rb +++ b/lib/pact_broker/ui/view_models/matrix_line.rb @@ -2,6 +2,7 @@ require 'pact_broker/ui/helpers/url_helper' require 'pact_broker/date_helper' require 'pact_broker/ui/view_models/matrix_tag' +require 'pact_broker/versions/abbreviate_number' module PactBroker module UI @@ -52,6 +53,10 @@ def consumer_version_number @line[:consumer_version_number] end + def display_consumer_version_number + PactBroker::Versions::AbbreviateNumber.call(consumer_version_number) + end + def consumer_version_number_url params = { pacticipant_name: consumer_name, version_number: consumer_version_number } hal_browser_url(version_url_from_params(params)) @@ -69,6 +74,10 @@ def provider_version_number @line[:provider_version_number] end + def display_provider_version_number + PactBroker::Versions::AbbreviateNumber.call(provider_version_number) + end + def provider_version_order @line[:provider_version_order] end diff --git a/lib/pact_broker/ui/views/matrix/show.haml b/lib/pact_broker/ui/views/matrix/show.haml index a4b99ade2..d56615e88 100644 --- a/lib/pact_broker/ui/views/matrix/show.haml +++ b/lib/pact_broker/ui/views/matrix/show.haml @@ -103,7 +103,7 @@ %td.consumer-version{'data-sort-value' => line.consumer_version_order} %div %a{href: line.consumer_version_number_url} - = line.consumer_version_number + = line.display_consumer_version_number - line.latest_consumer_version_tags.each do | tag | .tag-parent{"title": tag.tooltip, "data-toggle": "tooltip", "data-placement": "right"} %a{href: tag.url} @@ -127,7 +127,7 @@ %td.provider-version{'data-sort-value' => line.provider_version_order} %div %a{href: line.provider_version_number_url} - = line.provider_version_number + = line.display_provider_version_number - line.latest_provider_version_tags.each do | tag | .tag-parent{"title": tag.tooltip, "data-toggle": "tooltip", "data-placement": "right"} %a{href: tag.url} diff --git a/lib/pact_broker/versions/abbreviate_number.rb b/lib/pact_broker/versions/abbreviate_number.rb new file mode 100644 index 000000000..0e0f60923 --- /dev/null +++ b/lib/pact_broker/versions/abbreviate_number.rb @@ -0,0 +1,14 @@ +module PactBroker + module Versions + class AbbreviateNumber + + def self.call version_number + if version_number + version_number.gsub(/[A-Za-z0-9]{40}/) do | val | + val[0..6] + end + end + end + end + end +end diff --git a/spec/lib/pact_broker/versions/abbreviate_number_spec.rb b/spec/lib/pact_broker/versions/abbreviate_number_spec.rb new file mode 100644 index 000000000..8ee659092 --- /dev/null +++ b/spec/lib/pact_broker/versions/abbreviate_number_spec.rb @@ -0,0 +1,22 @@ +require 'pact_broker/versions/abbreviate_number' + +module PactBroker + module Versions + describe AbbreviateNumber do + describe "#call" do + TEST_CASES = [ + ['202326572516dea6998a7f311fcaa161c0768fc2', '2023265'], + ['1.2.3+areallyreallyreallylongexplanation', '1.2.3+areallyreallyreallylongexplanation'], + ['2516dea6998a7f', '2516dea6998a7f'], + ['1.2.3+202326572516dea6998a7f311fcaa161c0768fc2', '1.2.3+2023265'] + ] + + TEST_CASES.each do |(input, output)| + it "shortens #{input} to #{output}" do + expect(AbbreviateNumber.call(input)).to eq output + end + end + end + end + end +end