]> git.openstreetmap.org Git - rails.git/blob - test/helpers/browse_helper_test.rb
Write browse element icons as <img>
[rails.git] / test / helpers / browse_helper_test.rb
1 require "test_helper"
2
3 class BrowseHelperTest < ActionView::TestCase
4   include ERB::Util
5   include ApplicationHelper
6
7   def test_printable_element_name
8     node = create(:node, :with_history, :version => 2)
9     node_v1 = node.old_nodes.find_by(:version => 1)
10     node_v2 = node.old_nodes.find_by(:version => 2)
11     node_v1.redact!(create(:redaction))
12
13     add_tags_selection(node)
14     add_old_tags_selection(node_v2)
15     add_old_tags_selection(node_v1)
16
17     node_with_ref_without_name = create(:node)
18     create(:node_tag, :node => node_with_ref_without_name, :k => "ref", :v => "3.1415926")
19
20     deleted_node = create(:node, :deleted)
21
22     assert_dom_equal deleted_node.id.to_s, printable_element_name(deleted_node)
23     assert_dom_equal "<bdi>Test Node</bdi> (<bdi>#{node.id}</bdi>)", printable_element_name(node)
24     assert_dom_equal "<bdi>Test Node</bdi> (<bdi>#{node.id}</bdi>)", printable_element_name(node_v2)
25     assert_dom_equal node.id.to_s, printable_element_name(node_v1)
26     assert_dom_equal "<bdi>3.1415926</bdi> (<bdi>#{node_with_ref_without_name.id}</bdi>)", printable_element_name(node_with_ref_without_name)
27
28     I18n.with_locale "pt" do
29       assert_dom_equal deleted_node.id.to_s, printable_element_name(deleted_node)
30       assert_dom_equal "<bdi>Nó teste</bdi> (<bdi>#{node.id}</bdi>)", printable_element_name(node)
31       assert_dom_equal "<bdi>Nó teste</bdi> (<bdi>#{node.id}</bdi>)", printable_element_name(node_v2)
32       assert_dom_equal node.id.to_s, printable_element_name(node_v1)
33       assert_dom_equal "<bdi>3.1415926</bdi> (<bdi>#{node_with_ref_without_name.id}</bdi>)", printable_element_name(node_with_ref_without_name)
34     end
35
36     I18n.with_locale "pt-BR" do
37       assert_dom_equal deleted_node.id.to_s, printable_element_name(deleted_node)
38       assert_dom_equal "<bdi>Nó teste</bdi> (<bdi>#{node.id}</bdi>)", printable_element_name(node)
39       assert_dom_equal "<bdi>Nó teste</bdi> (<bdi>#{node.id}</bdi>)", printable_element_name(node_v2)
40       assert_dom_equal node.id.to_s, printable_element_name(node_v1)
41       assert_dom_equal "<bdi>3.1415926</bdi> (<bdi>#{node_with_ref_without_name.id}</bdi>)", printable_element_name(node_with_ref_without_name)
42     end
43
44     I18n.with_locale "de" do
45       assert_dom_equal deleted_node.id.to_s, printable_element_name(deleted_node)
46       assert_dom_equal "<bdi>Test Node</bdi> (<bdi>#{node.id}</bdi>)", printable_element_name(node)
47       assert_dom_equal "<bdi>Test Node</bdi> (<bdi>#{node.id}</bdi>)", printable_element_name(node_v2)
48       assert_dom_equal node.id.to_s, printable_element_name(node_v1)
49       assert_dom_equal "<bdi>3.1415926</bdi> (<bdi>#{node_with_ref_without_name.id}</bdi>)", printable_element_name(node_with_ref_without_name)
50     end
51   end
52
53   def test_element_strikethrough
54     node = create(:node, :with_history, :version => 2)
55     node_v1 = node.old_nodes.find_by(:version => 1)
56     node_v2 = node.old_nodes.find_by(:version => 2)
57     node_v1.redact!(create(:redaction))
58
59     normal_output = element_strikethrough(node_v2) { "test" }
60     assert_equal "test", normal_output
61
62     redacted_output = element_strikethrough(node_v1) { "test" }
63     assert_equal "<s>test</s>", redacted_output
64
65     deleted_output = element_strikethrough(create(:node, :deleted)) { "test" }
66     assert_equal "<s>test</s>", deleted_output
67   end
68
69   def test_element_icon
70     node = create(:node, :with_history, :version => 2)
71     node_v1 = node.old_nodes.find_by(:version => 1)
72     node_v2 = node.old_nodes.find_by(:version => 2)
73     node_v1.redact!(create(:redaction))
74
75     add_tags_selection(node)
76     add_old_tags_selection(node_v2)
77     add_old_tags_selection(node_v1)
78
79     icon = element_icon("node", create(:node))
80     icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon)
81     assert_dom icon_dom, "img:root", :count => 1 do
82       assert_dom "> @title", 0
83     end
84
85     icon = element_icon("node", create(:node, :deleted))
86     icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon)
87     assert_dom icon_dom, "img:root", :count => 1 do
88       assert_dom "> @title", 0
89     end
90
91     icon = element_icon("node", node)
92     icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon)
93     assert_dom icon_dom, "img:root", :count => 1 do
94       assert_dom "> @title", "building=yes, shop=gift, and tourism=museum"
95     end
96
97     icon = element_icon("node", node_v2)
98     icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon)
99     assert_dom icon_dom, "img:root", :count => 1 do
100       assert_dom "> @title", "building=yes, shop=gift, and tourism=museum"
101     end
102
103     icon = element_icon("node", node_v1)
104     icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon)
105     assert_dom icon_dom, "img:root", :count => 1 do
106       assert_dom "> @title", 0
107     end
108   end
109
110   private
111
112   def add_old_tags_selection(old_node)
113     { "building" => "yes",
114       "shop" => "gift",
115       "tourism" => "museum",
116       "name" => "Test Node",
117       "name:pt" => "Nó teste" }.each do |key, value|
118       create(:old_node_tag, :old_node => old_node, :k => key, :v => value)
119     end
120   end
121
122   def add_tags_selection(node)
123     { "building" => "yes",
124       "shop" => "gift",
125       "tourism" => "museum",
126       "name" => "Test Node",
127       "name:pt" => "Nó teste" }.each do |key, value|
128       create(:node_tag, :node => node, :k => key, :v => value)
129     end
130   end
131
132   def preferred_languages
133     Locale.list(I18n.locale)
134   end
135 end