diff --git a/app/services/contact_details/base.rb b/app/services/contact_details/base.rb index ebb65f0781c5376303ec4c03ebc5e0d042124b60..80b1c8211df55ac4b2570034d2948f5a75d1001c 100644 --- a/app/services/contact_details/base.rb +++ b/app/services/contact_details/base.rb @@ -3,17 +3,22 @@ class ContactDetails::Base def initialize(string) @string = string.to_s + return if @string.blank? prepare_url prepare_label end + def present? + url.present? + end + protected - def prepare_label - @label = @string + def prepare_url + @url = @string.dup end - def prepare_url - @url = @string + def prepare_label + @label = @string.dup end end \ No newline at end of file diff --git a/app/services/contact_details/country.rb b/app/services/contact_details/country.rb index 29132d5a235451a978d56fb3a3ed5fcafcbac270..0a006beb47a728d5aba977cc9fe223bbda4866b9 100644 --- a/app/services/contact_details/country.rb +++ b/app/services/contact_details/country.rb @@ -3,8 +3,7 @@ class ContactDetails::Country < ContactDetails::Base protected def prepare_label - super - # TODO country name + @label = ISO3166::Country[@string].common_name end end \ No newline at end of file diff --git a/app/services/contact_details/email.rb b/app/services/contact_details/email.rb index 1de30890d871960277fcc3c8a2c8af63fe33e979..ec1f6be6dd699ce80ca1dbb984d38fedab873616 100644 --- a/app/services/contact_details/email.rb +++ b/app/services/contact_details/email.rb @@ -1,9 +1,10 @@ class ContactDetails::Email < ContactDetails::Base + PREFIX = "mailto:" protected def prepare_url - @url = "mailto:#{@string}" + @url = "#{PREFIX}#{@string}" end end \ No newline at end of file diff --git a/app/services/contact_details/phone.rb b/app/services/contact_details/phone.rb index f3556062fd752d2f68b97ef48d1587cd18196abf..be75bbf8f56b0bdaa7c7d492a97363b7e9f7ec98 100644 --- a/app/services/contact_details/phone.rb +++ b/app/services/contact_details/phone.rb @@ -1,14 +1,16 @@ class ContactDetails::Phone < ContactDetails::Base + PREFIX = "tel:" protected def prepare_url - @url = @string.dup + super @url.remove! ' ' @url.remove! '.' + @url = "#{PREFIX}#{@url}" end def prepare_label - @label = @string + @label = @url.remove PREFIX end end \ No newline at end of file diff --git a/app/services/contact_details/twitter.rb b/app/services/contact_details/twitter.rb index b6d48276cec1b715cef01f1c17068ba18f01e2d6..208c93dd58ed90d1a366623b15b18410965d9f63 100644 --- a/app/services/contact_details/twitter.rb +++ b/app/services/contact_details/twitter.rb @@ -1,20 +1,19 @@ class ContactDetails::Twitter < ContactDetails::Base - URL = 'https://twitter.com' + URL = 'https://twitter.com/' DOMAIN = 'twitter.com' - + protected def prepare_url - @url = @string + super @url.remove! DOMAIN if @url.start_with? DOMAIN @url.remove! URL if @url.start_with? URL @url.delete_suffix! '/' @url.delete_prefix! '/' - @url = "#{URL}/#{@string}" + @url = "#{URL}#{@url}" end - + def prepare_label - super - @label.remove! URL + @label = @url.remove URL end end \ No newline at end of file diff --git a/app/services/contact_details/website.rb b/app/services/contact_details/website.rb index 583b03029c123f1b8537cfd7e7447de626f53598..7138658358ee556d1534ec395f65f7b302460de4 100644 --- a/app/services/contact_details/website.rb +++ b/app/services/contact_details/website.rb @@ -4,7 +4,7 @@ class ContactDetails::Website < ContactDetails::Base protected def prepare_url - @url = @string.to_s + super @url = "#{PROTOCOL}#{@url}" unless @url.start_with? PROTOCOL end diff --git a/app/views/admin/application/static/_contact_detail.html.erb b/app/views/admin/application/static/_contact_detail.html.erb index 3ac9e3345a57259c95ff6d68e5831c3cc54f79d9..29894af59ed3e34ef1ba1a2da2b83088dc6ea788 100644 --- a/app/views/admin/application/static/_contact_detail.html.erb +++ b/app/views/admin/application/static/_contact_detail.html.erb @@ -1,6 +1,8 @@ <% detail = kind.new data +if detail.present? %> <%= variable %>: label: <%= detail.label %> - url: <%= detail.url %> \ No newline at end of file + url: <%= detail.url %> +<% end %> \ No newline at end of file diff --git a/test/services/contact_details_test.rb b/test/services/contact_details_test.rb index 5f1ec176d6906e36e8ef19039c150a979f6c2946..822a72a1758e0763b6e9e5c8f5a3396613f3938d 100644 --- a/test/services/contact_details_test.rb +++ b/test/services/contact_details_test.rb @@ -4,68 +4,68 @@ class ContactDetailsTest < ActiveSupport::TestCase test "country nil" do detail = ContactDetails::Country.new nil - assert_equal detail.label, '' - assert_equal detail.url, '' + assert_nil detail.label + assert_nil detail.url end test "country FR" do detail = ContactDetails::Country.new 'FR' - assert_equal detail.label, 'France' - assert_equal detail.url, 'FR' + assert_equal 'France', detail.label + assert_equal 'FR', detail.url end test "email nil" do detail = ContactDetails::Email.new nil - assert_equal detail.label, '' - assert_equal detail.url, '' + assert_nil detail.label + assert_nil detail.url end test "email arnaud.levy@noesya.coop" do detail = ContactDetails::Email.new 'arnaud.levy@noesya.coop' - assert_equal detail.label, 'arnaud.levy@noesya.coop' - assert_equal detail.url, 'mailto:arnaud.levy@noesya.coop' + assert_equal 'arnaud.levy@noesya.coop', detail.label + assert_equal 'mailto:arnaud.levy@noesya.coop', detail.url end test "twitter nil" do detail = ContactDetails::Twitter.new nil - assert_equal detail.label, '' - assert_equal detail.url, '' + assert_nil detail.label + assert_nil detail.url end test "twitter handle" do detail = ContactDetails::Twitter.new 'arnaudlevy' - assert_equal detail.label, 'arnaudlevy' - assert_equal detail.url, 'https://twitter.com/arnaudlevy' + assert_equal 'arnaudlevy', detail.label + assert_equal 'https://twitter.com/arnaudlevy', detail.url end test "twitter twitter.com/arnaudlevy" do detail = ContactDetails::Twitter.new 'twitter.com/arnaudlevy' - assert_equal detail.label, 'arnaudlevy' - assert_equal detail.url, 'https://twitter.com/arnaudlevy' + assert_equal 'arnaudlevy', detail.label + assert_equal 'https://twitter.com/arnaudlevy', detail.url end test "twitter https://twitter.com/arnaudlevy" do detail = ContactDetails::Twitter.new 'https://twitter.com/arnaudlevy' - assert_equal detail.label, 'arnaudlevy' - assert_equal detail.url, 'https://twitter.com/arnaudlevy' + assert_equal 'arnaudlevy', detail.label + assert_equal 'https://twitter.com/arnaudlevy', detail.url end test "website nil" do detail = ContactDetails::Website.new nil - assert_equal detail.label, '' - assert_equal detail.url, '' + assert_nil detail.label + assert_nil detail.url end test "website www.noesya.coop" do detail = ContactDetails::Website.new 'www.noesya.coop' - assert_equal detail.label, 'www.noesya.coop' - assert_equal detail.url, 'https://www.noesya.coop' + assert_equal 'www.noesya.coop', detail.label + assert_equal 'https://www.noesya.coop', detail.url end test "website https://www.noesya.coop" do detail = ContactDetails::Website.new 'https://www.noesya.coop' - assert_equal detail.label, 'www.noesya.coop' - assert_equal detail.url, 'https://www.noesya.coop' + assert_equal 'www.noesya.coop', detail.label + assert_equal 'https://www.noesya.coop', detail.url end end \ No newline at end of file