]> git.openstreetmap.org Git - rails.git/blob - test/lib/tag2link_test.rb
Move tag2link transforms into module
[rails.git] / test / lib / tag2link_test.rb
1 # frozen_string_literal: true
2
3 require "test_helper"
4
5 class Tag2linkTest < ActiveSupport::TestCase
6   def test_link_returns_nil_for_full_url
7     assert_nil Tag2link.link("website", "https://example.com/page")
8   end
9
10   def test_link_returns_nil_for_unknown_key
11     assert_nil Tag2link.link("nonexistent_key", "SomeValue")
12   end
13
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
17   end
18
19   def test_build_dict_rejects_deprecated_and_third_party
20     data = [
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" }
24     ]
25     dict = Tag2link.build_dict(data)
26     assert_not_includes dict, "example"
27     assert_not_includes dict, "example2"
28     assert_includes dict, "example3"
29   end
30
31   def test_build_dict_chooses_single_preferred_item
32     data = [
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" }
35     ]
36     dict = Tag2link.build_dict(data)
37     assert_equal "http://example.com/$1", dict["example"]
38
39     data = [
40       { "key" => "Key:example", "url" => "http://example2.com/$1", "rank" => "preferred", "source" => "osmwiki:P8" }
41     ]
42     dict = Tag2link.build_dict(data)
43     assert_equal "http://example2.com/$1", dict["example"]
44   end
45
46   def test_build_dict_deduplicates_urls
47     data = [
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" }
50     ]
51     dict = Tag2link.build_dict(data)
52     assert_equal "http://example.com/$1", dict["example"]
53   end
54
55   def test_build_dict_rejects_multiple_equally_preferred_items
56     data = [
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" }
59     ]
60     dict = Tag2link.build_dict(data)
61     assert_not_includes dict, "example"
62
63     data = [
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" }
66     ]
67     dict = Tag2link.build_dict(data)
68     assert_not_includes dict, "example"
69   end
70 end