diff --git a/app/helpers/domain_helper.rb b/app/helpers/domain_helper.rb new file mode 100644 index 0000000..f291fbc --- /dev/null +++ b/app/helpers/domain_helper.rb @@ -0,0 +1,12 @@ +module DomainHelper + def normalize_domain(str) + str.strip.downcase + end + + def tld(str) + parts = normalize_domain(str).split(".") + fail ArgumentError unless parts.size >= 2 + + ".#{parts.last}" + end +end diff --git a/test/helpers/domain_helper_test.rb b/test/helpers/domain_helper_test.rb new file mode 100644 index 0000000..9b6cd59 --- /dev/null +++ b/test/helpers/domain_helper_test.rb @@ -0,0 +1,22 @@ +require "test_helper" +require "domain_helper" + +class DomainHelperTest < ActiveSupport::TestCase + include DomainHelper + + test "should normalize a domain name" do + assert_equal "example.org", normalize_domain(" example.org ") + assert_equal "example.org", normalize_domain("eXaMple.oRg") + end + + test "tld should return the domain tld" do + assert_equal ".org", tld("exaMple.ORG") + assert_equal ".fr", tld("www.example.fr") + assert_equal ".com", tld("www.example-dashed.com") + assert_equal ".uk", tld("www.example.co.uk") + + assert_raises(ArgumentError) do + tld("not a domain") + end + end +end