1 # frozen_string_literal: true
 
   5 class Tag2linkTest < ActiveSupport::TestCase
 
   6   def test_link_returns_nil_for_full_url
 
   7     assert_nil Tag2link.link("website", "https://example.com/page")
 
  10   def test_link_returns_nil_for_unknown_key
 
  11     assert_nil Tag2link.link("nonexistent_key", "SomeValue")
 
  14   def test_link_returns_proper_url_for_known_key
 
  15     url = Tag2link.link("wikidata", "Q936")
 
  16     assert_equal "https://www.wikidata.org/entity/Q936", url
 
  19   def test_build_dict_rejects_deprecated_and_third_party
 
  21       { "key" => "Key:example", "url" => "http://example.com/$1", "rank" => "deprecated", "source" => "osmwiki:P8" },
 
  22       { "key" => "Key:example2", "url" => "http://example2.com/$1", "rank" => "preferred", "source" => "wikidata:P3303" },
 
  23       { "key" => "Key:example3", "url" => "http://example3.com/$1", "rank" => "preferred", "source" => "osmwiki:P8" }
 
  25     dict = Tag2link.build_dict(data)
 
  26     assert_not_includes dict, "example"
 
  27     assert_not_includes dict, "example2"
 
  28     assert_includes dict, "example3"
 
  31   def test_build_dict_chooses_single_preferred_item
 
  33       { "key" => "Key:example", "url" => "http://example2.com/$1", "rank" => "normal", "source" => "osmwiki:P8" },
 
  34       { "key" => "Key:example", "url" => "http://example.com/$1", "rank" => "preferred", "source" => "osmwiki:P8" }
 
  36     dict = Tag2link.build_dict(data)
 
  37     assert_equal "http://example.com/$1", dict["example"]
 
  40       { "key" => "Key:example", "url" => "http://example2.com/$1", "rank" => "preferred", "source" => "osmwiki:P8" }
 
  42     dict = Tag2link.build_dict(data)
 
  43     assert_equal "http://example2.com/$1", dict["example"]
 
  46   def test_build_dict_deduplicates_urls
 
  48       { "key" => "Key:example", "url" => "http://example.com/$1", "rank" => "preferred", "source" => "osmwiki:P8" },
 
  49       { "key" => "Key:example", "url" => "http://example.com/$1", "rank" => "normal", "source" => "wikidata:P1630" }
 
  51     dict = Tag2link.build_dict(data)
 
  52     assert_equal "http://example.com/$1", dict["example"]
 
  55   def test_build_dict_rejects_multiple_equally_preferred_items
 
  57       { "key" => "Key:example", "url" => "http://example1.com/$1", "rank" => "preferred", "source" => "osmwiki:P8" },
 
  58       { "key" => "Key:example", "url" => "http://example2.com/$1", "rank" => "preferred", "source" => "osmwiki:P8" }
 
  60     dict = Tag2link.build_dict(data)
 
  61     assert_not_includes dict, "example"
 
  64       { "key" => "Key:example", "url" => "http://example1.com/$1", "rank" => "normal", "source" => "osmwiki:P8" },
 
  65       { "key" => "Key:example", "url" => "http://example2.com/$1", "rank" => "normal", "source" => "osmwiki:P8" }
 
  67     dict = Tag2link.build_dict(data)
 
  68     assert_not_includes dict, "example"