]> git.openstreetmap.org Git - rails.git/blob - test/helpers/user_roles_helper_test.rb
Merge remote-tracking branch 'upstream/pull/4776'
[rails.git] / test / helpers / user_roles_helper_test.rb
1 require "test_helper"
2
3 class UserRolesHelperTest < ActionView::TestCase
4   attr_accessor :current_user
5
6   def test_role_icon_normal
7     self.current_user = create(:user)
8
9     icon = role_icon(current_user, "moderator")
10     assert_dom_equal "", icon
11
12     icon = role_icon(current_user, "importer")
13     assert_dom_equal "", icon
14
15     icon = role_icon(create(:moderator_user), "moderator")
16     icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon)
17     assert_dom icon_dom, "svg:root", :count => 1 do
18       assert_dom "> title", :text => "This user is a moderator"
19     end
20
21     icon = role_icon(create(:importer_user), "importer")
22     icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon)
23     assert_dom icon_dom, "svg:root", :count => 1 do
24       assert_dom "> title", :text => "This user is a importer"
25     end
26   end
27
28   def test_role_icon_administrator
29     self.current_user = create(:administrator_user)
30
31     create(:user) do |user|
32       icon = role_icon(user, "moderator")
33       icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon)
34       assert_dom icon_dom, "a:root[href='#{grant_role_path(user, 'moderator')}']", :count => 1 do
35         assert_dom "> svg", :count => 1 do
36           assert_dom "> title", :text => "Grant moderator access"
37         end
38       end
39
40       icon = role_icon(user, "importer")
41       icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon)
42       assert_dom icon_dom, "a:root[href='#{grant_role_path(user, 'importer')}']", :count => 1 do
43         assert_dom "> svg", :count => 1 do
44           assert_dom "> title", :text => "Grant importer access"
45         end
46       end
47     end
48
49     create(:moderator_user) do |user|
50       icon = role_icon(user, "moderator")
51       icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon)
52       assert_dom icon_dom, "a:root[href='#{revoke_role_path(user, 'moderator')}']", :count => 1 do
53         assert_dom "> svg", :count => 1 do
54           assert_dom "> title", :text => "Revoke moderator access"
55         end
56       end
57
58       icon = role_icon(user, "importer")
59       icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon)
60       assert_dom icon_dom, "a:root[href='#{grant_role_path(user, 'importer')}']", :count => 1 do
61         assert_dom "> svg", :count => 1 do
62           assert_dom "> title", :text => "Grant importer access"
63         end
64       end
65     end
66
67     create(:importer_user) do |user|
68       icon = role_icon(user, "moderator")
69       icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon)
70       assert_dom icon_dom, "a:root[href='#{grant_role_path(user, 'moderator')}']", :count => 1 do
71         assert_dom "> svg", :count => 1 do
72           assert_dom "> title", :text => "Grant moderator access"
73         end
74       end
75
76       icon = role_icon(user, "importer")
77       icon_dom = Rails::Dom::Testing.html_document_fragment.parse(icon)
78       assert_dom icon_dom, "a:root[href='#{revoke_role_path(user, 'importer')}']", :count => 1 do
79         assert_dom "> svg", :count => 1 do
80           assert_dom "> title", :text => "Revoke importer access"
81         end
82       end
83     end
84   end
85
86   def test_role_icons_normal
87     self.current_user = create(:user)
88
89     icons = role_icons(current_user)
90     assert_dom_equal "", icons
91
92     icons = role_icons(create(:moderator_user))
93     icons_dom = Rails::Dom::Testing.html_document_fragment.parse(icons)
94     assert_dom icons_dom, "svg:root > title", :text => "This user is a moderator"
95
96     icons = role_icons(create(:importer_user))
97     icons_dom = Rails::Dom::Testing.html_document_fragment.parse(icons)
98     assert_dom icons_dom, "svg:root > title", :text => "This user is a importer"
99
100     icons = role_icons(create(:super_user))
101     icons_dom = Rails::Dom::Testing.html_document_fragment.parse(icons)
102     assert_dom icons_dom, "svg:root", :count => 3 do
103       assert_dom "> title", :text => "This user is an administrator"
104       assert_dom "> title", :text => "This user is a moderator"
105       assert_dom "> title", :text => "This user is a importer"
106     end
107   end
108
109   def test_role_icons_administrator
110     self.current_user = create(:administrator_user)
111
112     create(:user) do |user|
113       icons = role_icons(user)
114       icons_dom = Rails::Dom::Testing.html_document_fragment.parse(icons)
115       assert_dom icons_dom, "a:root", :count => 3
116       assert_dom icons_dom, "a:root[href='#{grant_role_path(user, 'administrator')}']" do
117         assert_dom "> svg > title", :text => "Grant administrator access"
118       end
119       assert_dom icons_dom, "a:root[href='#{grant_role_path(user, 'moderator')}']" do
120         assert_dom "> svg > title", :text => "Grant moderator access"
121       end
122       assert_dom icons_dom, "a:root[href='#{grant_role_path(user, 'importer')}']" do
123         assert_dom "> svg > title", :text => "Grant importer access"
124       end
125     end
126
127     create(:moderator_user) do |user|
128       icons = role_icons(user)
129       icons_dom = Rails::Dom::Testing.html_document_fragment.parse(icons)
130       assert_dom icons_dom, "a:root", :count => 3
131       assert_dom icons_dom, "a:root[href='#{grant_role_path(user, 'administrator')}']" do
132         assert_dom "> svg > title", :text => "Grant administrator access"
133       end
134       assert_dom icons_dom, "a:root[href='#{revoke_role_path(user, 'moderator')}']" do
135         assert_dom "> svg > title", :text => "Revoke moderator access"
136       end
137       assert_dom icons_dom, "a:root[href='#{grant_role_path(user, 'importer')}']" do
138         assert_dom "> svg > title", :text => "Grant importer access"
139       end
140     end
141
142     create(:importer_user) do |user|
143       icons = role_icons(user)
144       icons_dom = Rails::Dom::Testing.html_document_fragment.parse(icons)
145       assert_dom icons_dom, "a:root", :count => 3
146       assert_dom icons_dom, "a:root[href='#{grant_role_path(user, 'administrator')}']" do
147         assert_dom "> svg > title", :text => "Grant administrator access"
148       end
149       assert_dom icons_dom, "a:root[href='#{grant_role_path(user, 'moderator')}']" do
150         assert_dom "> svg > title", :text => "Grant moderator access"
151       end
152       assert_dom icons_dom, "a:root[href='#{revoke_role_path(user, 'importer')}']" do
153         assert_dom "> svg > title", :text => "Revoke importer access"
154       end
155     end
156
157     create(:super_user) do |user|
158       icons = role_icons(user)
159       icons_dom = Rails::Dom::Testing.html_document_fragment.parse(icons)
160       assert_dom icons_dom, "a:root", :count => 3
161       assert_dom icons_dom, "a:root[href='#{revoke_role_path(user, 'administrator')}']" do
162         assert_dom "> svg > title", :text => "Revoke administrator access"
163       end
164       assert_dom icons_dom, "a:root[href='#{revoke_role_path(user, 'moderator')}']" do
165         assert_dom "> svg > title", :text => "Revoke moderator access"
166       end
167       assert_dom icons_dom, "a:root[href='#{revoke_role_path(user, 'importer')}']" do
168         assert_dom "> svg > title", :text => "Revoke importer access"
169       end
170     end
171   end
172 end