5604b09bfef2585225900b554af70354a355d8e7
[rails.git] / test / helpers / application_helper_test.rb
1 require 'test_helper'
2
3 class ApplicationHelperTest < ActionView::TestCase
4   fixtures :users, :user_roles
5
6   def setup
7     I18n.locale = "en"
8   end
9
10   def setup
11     I18n.locale = "en"
12   end
13
14   def test_linkify
15     %w(http://example.com/test ftp://example.com/test https://example.com/test).each do |link|
16       text = "Test #{link} is made into a link"
17
18       html = linkify(text)
19       assert_equal false, html.html_safe?
20       assert_dom_equal "Test <a href=\"#{link}\" rel=\"nofollow\">#{link}</a> is made into a link", html
21
22       html = linkify(text.html_safe)
23       assert_equal true, html.html_safe?    
24       assert_dom_equal "Test <a href=\"#{link}\" rel=\"nofollow\">#{link}</a> is made into a link", html
25     end
26
27     %w(test@example.com mailto:test@example.com).each do |link|
28       text = "Test #{link} is not made into a link"
29
30       html = linkify(text)
31       assert_equal false, html.html_safe?
32       assert_dom_equal text, html
33
34       html = linkify(text.html_safe)
35       assert_equal true, html.html_safe?    
36       assert_dom_equal text, html
37     end
38   end
39
40   def test_rss_link_to
41     link = rss_link_to(:controller => :diary_entry, :action => :rss)
42     assert_dom_equal "<a class=\"rsssmall\" href=\"/diary/rss\"><img alt=\"Rss\" border=\"0\" height=\"16\" src=\"/images/RSS.png\" width=\"16\" /></a>", link
43   end
44
45   def test_atom_link_to
46     link = atom_link_to(:controller => :changeset, :action => :feed)
47     assert_dom_equal "<a class=\"rsssmall\" href=\"/history/feed\"><img alt=\"Rss\" border=\"0\" height=\"16\" src=\"/images/RSS.png\" width=\"16\" /></a>", link
48   end
49
50   def test_style_rules
51     @user = nil
52
53     css = style_rules
54     assert_match /\.hidden /, css
55     assert_match /\.hide_unless_logged_in /, css
56     assert_no_match /\.hide_if_logged_in /, css
57     assert_no_match /\.hide_if_user_/, css
58     assert_no_match /\.show_if_user_/, css
59     assert_match /\.hide_unless_administrator /, css
60     assert_match /\.hide_unless_moderator /, css
61
62     @user = users(:normal_user)
63
64     css = style_rules
65     assert_match /\.hidden /, css
66     assert_no_match /\.hide_unless_logged_in /, css
67     assert_match /\.hide_if_logged_in /, css
68     assert_match /\.hide_if_user_1 /, css
69     assert_match /\.show_if_user_1 /, css
70     assert_match /\.hide_unless_administrator /, css
71     assert_match /\.hide_unless_moderator /, css
72
73     @user = users(:moderator_user)
74
75     css = style_rules
76     assert_match /\.hidden /, css
77     assert_no_match /\.hide_unless_logged_in /, css
78     assert_match /\.hide_if_logged_in /, css
79     assert_match /\.hide_if_user_5 /, css
80     assert_match /\.show_if_user_5 /, css
81     assert_match /\.hide_unless_administrator /, css
82     assert_no_match /\.hide_unless_moderator /, css
83
84     @user = users(:administrator_user)
85
86     css = style_rules
87     assert_match /\.hidden /, css
88     assert_no_match /\.hide_unless_logged_in /, css
89     assert_match /\.hide_if_logged_in /, css
90     assert_match /\.hide_if_user_6 /, css
91     assert_match /\.show_if_user_6 /, css
92     assert_no_match /\.hide_unless_administrator /, css
93     assert_match /\.hide_unless_moderator /, css
94   end
95
96   def test_if_logged_in
97     html = if_logged_in { "Test 1" }
98     assert_dom_equal "<div class=\"hide_unless_logged_in\">Test 1</div>", html
99
100     html = if_logged_in(:span) { "Test 2" }
101     assert_dom_equal "<span class=\"hide_unless_logged_in\">Test 2</span>", html
102   end
103
104   def test_if_not_logged_in
105     html = if_not_logged_in { "Test 1" }
106     assert_dom_equal "<div class=\"hide_if_logged_in\">Test 1</div>", html
107
108     html = if_not_logged_in(:span) { "Test 2" }
109     assert_dom_equal "<span class=\"hide_if_logged_in\">Test 2</span>", html
110   end
111
112   def test_if_user
113     html = if_user(users(:normal_user)) { "Test 1" }
114     assert_dom_equal "<div class=\"hidden show_if_user_1\">Test 1</div>", html
115
116     html = if_user(users(:normal_user), :span) { "Test 2" }
117     assert_dom_equal "<span class=\"hidden show_if_user_1\">Test 2</span>", html
118
119     html = if_user(nil) { "Test 3" }
120     assert_nil html
121
122     html = if_user(nil, :span) { "Test 4" }
123     assert_nil html
124   end
125
126   def test_unless_user
127     html = unless_user(users(:normal_user)) { "Test 1" }
128     assert_dom_equal "<div class=\"hide_if_user_1\">Test 1</div>", html
129
130     html = unless_user(users(:normal_user), :span) { "Test 2" }
131     assert_dom_equal "<span class=\"hide_if_user_1\">Test 2</span>", html
132
133     html = unless_user(nil) { "Test 3" }
134     assert_dom_equal "<div>Test 3</div>", html
135
136     html = unless_user(nil, :span) { "Test 4" }
137     assert_dom_equal "<span>Test 4</span>", html
138   end
139
140   def test_if_administrator
141     html = if_administrator { "Test 1" }
142     assert_dom_equal "<div class=\"hide_unless_administrator\">Test 1</div>", html
143
144     html = if_administrator(:span) { "Test 2" }
145     assert_dom_equal "<span class=\"hide_unless_administrator\">Test 2</span>", html
146   end
147
148   def test_richtext_area
149     html = richtext_area(:message, :body, :cols => 40, :rows => 20)
150     assert_not_nil html
151   end
152
153   def test_dir
154     assert_equal "ltr", dir
155
156     params[:dir] = "rtl"
157     assert_equal "rtl", dir
158     params.delete(:dir)
159
160     I18n.locale = "he"
161
162     assert_equal "rtl", dir
163
164     params[:dir] = "ltr"
165     assert_equal "ltr", dir
166     params.delete(:dir)
167   end
168
169   def test_friendly_date
170     date = friendly_date(Time.new(2014, 3, 5, 18, 58, 23))
171     assert_match /^<span title=" *5 March 2014 at 18:58">.*<\/span>$/, date
172
173     date = friendly_date(Time.now - 1.hour)
174     assert_match /^<span title=".*">about 1 hour<\/span>$/, date
175
176     date = friendly_date(Time.now - 2.days)
177     assert_match /^<span title=".*">2 days<\/span>$/, date
178
179     date = friendly_date(Time.now - 3.weeks)
180     assert_match /^<span title=".*">21 days<\/span>$/, date
181
182     date = friendly_date(Time.now - 4.months)
183     assert_match /^<span title=".*">4 months<\/span>$/, date
184   end
185
186   def test_body_class
187   end
188
189   def test_current_page_class
190   end
191 end