]> git.openstreetmap.org Git - rails.git/blob - test/helpers/browse_helper_test.rb
Added tests for wikidata links in the browse helper
[rails.git] / test / helpers / browse_helper_test.rb
1 # -*- coding: utf-8 -*-
2
3 require 'test_helper'
4
5 class BrowseHelperTest < ActionView::TestCase
6   include ERB::Util
7   include ApplicationHelper
8
9   api_fixtures
10
11   def setup
12     I18n.locale = "en"
13   end
14
15   def test_printable_name
16     assert_equal "17", printable_name(current_nodes(:redacted_node))
17     assert_equal "<bdi>Test Node</bdi> (<bdi>18</bdi>)", printable_name(current_nodes(:node_with_name))
18     assert_equal "<bdi>Test Node</bdi> (<bdi>18</bdi>)", printable_name(nodes(:node_with_name_current_version))
19     assert_equal "18", printable_name(nodes(:node_with_name_redacted_version))
20     assert_equal "<bdi>Test Node</bdi> (<bdi>18, v2</bdi>)", printable_name(nodes(:node_with_name_current_version), true)
21     assert_equal "18, v1", printable_name(nodes(:node_with_name_redacted_version), true)
22
23     I18n.locale = "ru"
24
25     assert_equal "17", printable_name(current_nodes(:redacted_node))
26     assert_equal "<bdi>проверки узла</bdi> (<bdi>18</bdi>)", printable_name(current_nodes(:node_with_name))
27     assert_equal "<bdi>проверки узла</bdi> (<bdi>18</bdi>)", printable_name(nodes(:node_with_name_current_version))
28     assert_equal "18", printable_name(nodes(:node_with_name_redacted_version))
29     assert_equal "<bdi>проверки узла</bdi> (<bdi>18, v2</bdi>)", printable_name(nodes(:node_with_name_current_version), true)
30     assert_equal "18, v1", printable_name(nodes(:node_with_name_redacted_version), true)
31
32     I18n.locale = "ru-RU"
33
34     assert_equal "17", printable_name(current_nodes(:redacted_node))
35     assert_equal "<bdi>проверки узла</bdi> (<bdi>18</bdi>)", printable_name(current_nodes(:node_with_name))
36     assert_equal "<bdi>проверки узла</bdi> (<bdi>18</bdi>)", printable_name(nodes(:node_with_name_current_version))
37     assert_equal "18", printable_name(nodes(:node_with_name_redacted_version))
38     assert_equal "<bdi>проверки узла</bdi> (<bdi>18, v2</bdi>)", printable_name(nodes(:node_with_name_current_version), true)
39     assert_equal "18, v1", printable_name(nodes(:node_with_name_redacted_version), true)
40
41     I18n.locale = "de"
42
43     assert_equal "17", printable_name(current_nodes(:redacted_node))
44     assert_equal "<bdi>Test Node</bdi> (<bdi>18</bdi>)", printable_name(current_nodes(:node_with_name))
45     assert_equal "<bdi>Test Node</bdi> (<bdi>18</bdi>)", printable_name(nodes(:node_with_name_current_version))
46     assert_equal "18", printable_name(nodes(:node_with_name_redacted_version))
47     assert_equal "<bdi>Test Node</bdi> (<bdi>18, v2</bdi>)", printable_name(nodes(:node_with_name_current_version), true)
48     assert_equal "18, v1", printable_name(nodes(:node_with_name_redacted_version), true)
49   end
50
51   def test_link_class
52     assert_equal "node", link_class("node", current_nodes(:visible_node))
53     assert_equal "node deleted", link_class("node", current_nodes(:invisible_node))
54     assert_equal "node deleted", link_class("node", current_nodes(:redacted_node))
55     assert_equal "node building yes shop gift tourism museum", link_class("node", current_nodes(:node_with_name))
56     assert_equal "node building yes shop gift tourism museum", link_class("node", nodes(:node_with_name_current_version))
57     assert_equal "node deleted", link_class("node", nodes(:node_with_name_redacted_version))
58   end
59
60   def test_link_title
61     assert_equal "", link_title(current_nodes(:visible_node))
62     assert_equal "", link_title(current_nodes(:invisible_node))
63     assert_equal "", link_title(current_nodes(:redacted_node))
64     assert_equal "building=yes, shop=gift, and tourism=museum", link_title(current_nodes(:node_with_name))
65     assert_equal "building=yes, shop=gift, and tourism=museum", link_title(nodes(:node_with_name_current_version))
66     assert_equal "", link_title(nodes(:node_with_name_redacted_version))
67   end
68
69   def test_format_key
70     html = format_key("highway")
71     assert_equal "<a href=\"http://wiki.openstreetmap.org/wiki/Key:highway?uselang=en\" title=\"The wiki description page for the highway tag\">highway</a>", html
72
73     html = format_key("unknown")
74     assert_equal "unknown", html
75   end
76
77   def test_format_value
78     html = format_value("highway", "primary")
79     assert_equal "<a href=\"http://wiki.openstreetmap.org/wiki/Tag:highway=primary?uselang=en\" title=\"The wiki description page for the highway=primary tag\">primary</a>", html
80
81     html = format_value("highway", "unknown")
82     assert_equal "unknown", html
83
84     html = format_value("unknown", "unknown")
85     assert_equal "unknown", html
86
87     html = format_value("phone", "+1234567890")
88     assert_equal "<a href=\"tel:+1234567890\" title=\"Call +1234567890\">+1234567890</a>", html
89   end
90
91   def test_icon_tags
92     tags = icon_tags(current_nodes(:node_with_name))
93     assert_equal 3, tags.count
94     assert tags.include?(["building", "yes"])
95     assert tags.include?(["tourism", "museum"])
96     assert tags.include?(["shop", "gift"])
97
98     tags = icon_tags(nodes(:node_with_name_current_version))
99     assert_equal 3, tags.count
100     assert tags.include?(["building", "yes"])
101     assert tags.include?(["tourism", "museum"])
102     assert tags.include?(["shop", "gift"])
103
104     tags = icon_tags(nodes(:node_with_name_redacted_version))
105     assert_equal 3, tags.count
106     assert tags.include?(["building", "yes"])
107     assert tags.include?(["tourism", "museum"])
108     assert tags.include?(["shop", "gift"])
109   end
110
111   def test_wiki_link
112     link = wiki_link("key", "highway")
113     assert_equal "http://wiki.openstreetmap.org/wiki/Key:highway?uselang=en", link
114
115     link = wiki_link("tag", "highway=primary")
116     assert_equal "http://wiki.openstreetmap.org/wiki/Tag:highway=primary?uselang=en", link
117
118     I18n.locale = "de"
119
120     link = wiki_link("key", "highway")
121     assert_equal "http://wiki.openstreetmap.org/wiki/DE:Key:highway?uselang=de", link
122
123     link = wiki_link("tag", "highway=primary")
124     assert_equal "http://wiki.openstreetmap.org/wiki/DE:Tag:highway=primary?uselang=de", link
125
126     I18n.locale = "tr"
127
128     link = wiki_link("key", "highway")
129     assert_equal "http://wiki.openstreetmap.org/wiki/Tr:Key:highway?uselang=tr", link
130
131     link = wiki_link("tag", "highway=primary")
132     assert_equal "http://wiki.openstreetmap.org/wiki/Tag:highway=primary?uselang=tr", link
133   end
134
135   def test_wikidata_link
136     link = wikidata_link("foo", "Test")
137     assert_nil link
138
139     link = wikidata_link("wikidata", "http://www.wikidata.org/wiki/Q1")
140     assert_nil link
141
142     link = wikidata_link("wikidata", "en:Q1")
143     assert_nil link
144
145     link = wikidata_link("wikidata", "1")
146     assert_nil link
147
148     link = wikidata_link("wikidata", "Q0123")
149     assert_nil link
150
151     link = wikidata_link("wikidata", "Q42")
152     assert_equal "//www.wikidata.org/wiki/Q42?uselang=en", link[:url]
153     assert_equal "Q42", link[:title]
154
155     I18n.locale = "zh-CN"
156
157     link = wikidata_link("wikidata", "Q1234")
158     assert_equal "//www.wikidata.org/wiki/Q1234?uselang=zh-CN", link[:url]
159     assert_equal "Q1234", link[:title]
160   end
161
162   def test_wikipedia_link
163     link = wikipedia_link("wikipedia", "http://en.wikipedia.org/wiki/Full%20URL")
164     assert_nil link
165
166     link = wikipedia_link("wikipedia", "https://en.wikipedia.org/wiki/Full%20URL")
167     assert_nil link
168
169     link = wikipedia_link("wikipedia", "Test")
170     assert_equal "http://en.wikipedia.org/wiki/Test?uselang=en", link[:url]
171     assert_equal "Test", link[:title]
172
173     link = wikipedia_link("wikipedia", "de:Test")
174     assert_equal "http://de.wikipedia.org/wiki/de:Test?uselang=en", link[:url]
175     assert_equal "de:Test", link[:title]
176
177     link = wikipedia_link("wikipedia:fr", "de:Test")
178     assert_equal "http://fr.wikipedia.org/wiki/de:Test?uselang=en", link[:url]
179     assert_equal "de:Test", link[:title]
180
181     I18n.locale = "pt-BR"
182
183     link = wikipedia_link("wikipedia", "zh-classical:Test#Section")
184     assert_equal "http://zh-classical.wikipedia.org/wiki/zh-classical:Test?uselang=pt-BR#Section", link[:url]
185     assert_equal "zh-classical:Test#Section", link[:title]
186
187     link = wikipedia_link("foo", "Test")
188     assert_nil link
189   end
190
191   def test_telephone_link
192     link = telephone_link("foo", "Test")
193     assert_nil link
194
195     link = telephone_link("phone", "+123")
196     assert_nil link
197
198     link = telephone_link("phone", "123")
199     assert_nil link
200
201     link = telephone_link("phone", "123 abcdefg")
202     assert_nil link
203
204     link = telephone_link("phone", "+1234567890 abc")
205     assert_nil link
206
207     link = telephone_link("phone", "+1234567890; +22334455667788")
208     assert_nil link
209
210     link = telephone_link("phone", "1234567890")
211     assert_nil link
212
213     link = telephone_link("phone", "+1234567890")
214     assert_equal "tel:+1234567890", link
215
216     link = telephone_link("phone", "+1234-567-890")
217     assert_equal "tel:+1234-567-890", link
218
219     link = telephone_link("phone", "+1234/567/890")
220     assert_equal "tel:+1234/567/890", link
221
222     link = telephone_link("phone", "+1234.567.890")
223     assert_equal "tel:+1234.567.890", link
224
225     link = telephone_link("phone", "   +1234 567-890    ")
226     assert_equal "tel:+1234567-890", link
227
228     link = telephone_link("phone", "+1 234-567-890")
229     assert_equal "tel:+1234-567-890", link
230
231     link = telephone_link("phone", "+1 (234) 567-890")
232     assert_equal "tel:+1(234)567-890", link
233   end
234 end