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