Merge branch 'master' into overpass
[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_wikipedia_link
136     link = wikipedia_link("wikipedia", "http://en.wikipedia.org/wiki/Full%20URL")
137     assert_nil link
138
139     link = wikipedia_link("wikipedia", "https://en.wikipedia.org/wiki/Full%20URL")
140     assert_nil link
141
142     link = wikipedia_link("wikipedia", "Test")
143     assert_equal "http://en.wikipedia.org/wiki/Test?uselang=en", link[:url]
144     assert_equal "Test", link[:title]
145
146     link = wikipedia_link("wikipedia", "de:Test")
147     assert_equal "http://de.wikipedia.org/wiki/de:Test?uselang=en", link[:url]
148     assert_equal "de:Test", link[:title]
149
150     link = wikipedia_link("wikipedia:fr", "de:Test")
151     assert_equal "http://fr.wikipedia.org/wiki/de:Test?uselang=en", link[:url]
152     assert_equal "de:Test", link[:title]
153
154     I18n.locale = "pt-BR"
155
156     link = wikipedia_link("wikipedia", "zh-classical:Test#Section")
157     assert_equal "http://zh-classical.wikipedia.org/wiki/zh-classical:Test?uselang=pt-BR#Section", link[:url]
158     assert_equal "zh-classical:Test#Section", link[:title]
159
160     link = wikipedia_link("foo", "Test")
161     assert_nil link
162   end
163
164   def test_telephone_link
165     link = telephone_link("foo", "Test")
166     assert_nil link
167
168     link = telephone_link("phone", "+123")
169     assert_nil link
170
171     link = telephone_link("phone", "123")
172     assert_nil link
173
174     link = telephone_link("phone", "123 abcdefg")
175     assert_nil link
176
177     link = telephone_link("phone", "+1234567890 abc")
178     assert_nil link
179
180     link = telephone_link("phone", "+1234567890; +22334455667788")
181     assert_nil link
182
183     link = telephone_link("phone", "1234567890")
184     assert_nil link
185
186     link = telephone_link("phone", "+1234567890")
187     assert_equal "tel:+1234567890", link
188
189     link = telephone_link("phone", "+1234-567-890")
190     assert_equal "tel:+1234-567-890", link
191
192     link = telephone_link("phone", "+1234/567/890")
193     assert_equal "tel:+1234/567/890", link
194
195     link = telephone_link("phone", "+1234.567.890")
196     assert_equal "tel:+1234.567.890", link
197
198     link = telephone_link("phone", "   +1234 567-890    ")
199     assert_equal "tel:+1234567-890", link
200
201     link = telephone_link("phone", "+1 234-567-890")
202     assert_equal "tel:+1234-567-890", link
203
204     link = telephone_link("phone", "+1 (234) 567-890")
205     assert_equal "tel:+1(234)567-890", link
206   end
207 end