From 415ac76ded64d375f40b3ab0fd93f461afab5d4a Mon Sep 17 00:00:00 2001
From: Arnaud Levy <contact@arnaudlevy.com>
Date: Wed, 18 Jan 2023 16:44:08 +0100
Subject: [PATCH] tests

---
 app/services/contact_details/base.rb    |  2 +-
 app/services/contact_details/twitter.rb |  6 +--
 test/services/contact_details_test.rb   | 71 +++++++++++++++++++++++++
 3 files changed, 73 insertions(+), 6 deletions(-)
 create mode 100644 test/services/contact_details_test.rb

diff --git a/app/services/contact_details/base.rb b/app/services/contact_details/base.rb
index 62d6fb679..ebb65f078 100644
--- a/app/services/contact_details/base.rb
+++ b/app/services/contact_details/base.rb
@@ -2,7 +2,7 @@ class ContactDetails::Base
   attr_accessor :url, :label
 
   def initialize(string)
-    @string = string
+    @string = string.to_s
     prepare_url
     prepare_label
   end
diff --git a/app/services/contact_details/twitter.rb b/app/services/contact_details/twitter.rb
index 3a9a69038..b6d48276c 100644
--- a/app/services/contact_details/twitter.rb
+++ b/app/services/contact_details/twitter.rb
@@ -3,11 +3,7 @@ class ContactDetails::Twitter < ContactDetails::Base
   DOMAIN = 'twitter.com'
   
   protected
-  
-  # arnaudlevy
-  # twitter.com/arnaudlevy
-  # https://twitter.com/arnaudlevy
-  # TODO vrais tests
+
   def prepare_url
     @url = @string
     @url.remove! DOMAIN if @url.start_with? DOMAIN
diff --git a/test/services/contact_details_test.rb b/test/services/contact_details_test.rb
new file mode 100644
index 000000000..5f1ec176d
--- /dev/null
+++ b/test/services/contact_details_test.rb
@@ -0,0 +1,71 @@
+require "test_helper"
+
+class ContactDetailsTest < ActiveSupport::TestCase
+
+  test "country nil" do
+    detail = ContactDetails::Country.new nil
+    assert_equal detail.label, ''
+    assert_equal detail.url, ''
+  end
+
+  test "country FR" do
+    detail = ContactDetails::Country.new 'FR'
+    assert_equal detail.label, 'France'
+    assert_equal detail.url, 'FR'
+  end
+
+  test "email nil" do
+    detail = ContactDetails::Email.new nil
+    assert_equal detail.label, ''
+    assert_equal 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'
+  end
+
+  test "twitter nil" do
+    detail = ContactDetails::Twitter.new nil
+    assert_equal detail.label, ''
+    assert_equal 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'
+  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'
+  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'
+  end
+
+  test "website nil" do
+    detail = ContactDetails::Website.new nil
+    assert_equal detail.label, ''
+    assert_equal 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'
+  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'
+  end
+
+end
\ No newline at end of file
-- 
GitLab