padrino-helpers 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. data/.document +5 -0
  2. data/.gitignore +21 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +7 -0
  5. data/Rakefile +58 -0
  6. data/VERSION +1 -0
  7. data/lib/padrino-helpers.rb +16 -0
  8. data/lib/padrino-helpers/asset_tag_helpers.rb +97 -0
  9. data/lib/padrino-helpers/form_builder/abstract_form_builder.rb +139 -0
  10. data/lib/padrino-helpers/form_builder/standard_form_builder.rb +37 -0
  11. data/lib/padrino-helpers/form_helpers.rb +194 -0
  12. data/lib/padrino-helpers/format_helpers.rb +74 -0
  13. data/lib/padrino-helpers/output_helpers.rb +98 -0
  14. data/lib/padrino-helpers/render_helpers.rb +63 -0
  15. data/lib/padrino-helpers/tag_helpers.rb +42 -0
  16. data/test/active_support_helpers.rb +7 -0
  17. data/test/fixtures/markup_app/app.rb +61 -0
  18. data/test/fixtures/markup_app/views/capture_concat.erb +14 -0
  19. data/test/fixtures/markup_app/views/capture_concat.haml +13 -0
  20. data/test/fixtures/markup_app/views/content_for.erb +11 -0
  21. data/test/fixtures/markup_app/views/content_for.haml +9 -0
  22. data/test/fixtures/markup_app/views/content_tag.erb +11 -0
  23. data/test/fixtures/markup_app/views/content_tag.haml +9 -0
  24. data/test/fixtures/markup_app/views/fields_for.erb +8 -0
  25. data/test/fixtures/markup_app/views/fields_for.haml +6 -0
  26. data/test/fixtures/markup_app/views/form_for.erb +56 -0
  27. data/test/fixtures/markup_app/views/form_for.haml +47 -0
  28. data/test/fixtures/markup_app/views/form_tag.erb +57 -0
  29. data/test/fixtures/markup_app/views/form_tag.haml +45 -0
  30. data/test/fixtures/markup_app/views/link_to.erb +5 -0
  31. data/test/fixtures/markup_app/views/link_to.haml +4 -0
  32. data/test/fixtures/markup_app/views/mail_to.erb +3 -0
  33. data/test/fixtures/markup_app/views/mail_to.haml +3 -0
  34. data/test/fixtures/render_app/app.rb +53 -0
  35. data/test/fixtures/render_app/views/erb/test.erb +1 -0
  36. data/test/fixtures/render_app/views/haml/test.haml +1 -0
  37. data/test/fixtures/render_app/views/template/_user.haml +7 -0
  38. data/test/fixtures/render_app/views/template/haml_template.haml +1 -0
  39. data/test/fixtures/render_app/views/template/some_template.haml +2 -0
  40. data/test/helper.rb +73 -0
  41. data/test/test_asset_tag_helpers.rb +127 -0
  42. data/test/test_form_builder.rb +611 -0
  43. data/test/test_form_helpers.rb +406 -0
  44. data/test/test_format_helpers.rb +96 -0
  45. data/test/test_output_helpers.rb +63 -0
  46. data/test/test_render_helpers.rb +78 -0
  47. data/test/test_tag_helpers.rb +73 -0
  48. metadata +174 -0
@@ -0,0 +1,406 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+ require File.dirname(__FILE__) + '/fixtures/markup_app/app'
3
+
4
+ class TestFormHelpers < Test::Unit::TestCase
5
+ include Padrino::Helpers::FormHelpers
6
+
7
+ def app
8
+ MarkupDemo.tap { |app| app.set :environment, :test }
9
+ end
10
+
11
+ context 'for #form_tag method' do
12
+ should "display correct forms in ruby" do
13
+ actual_html = form_tag('/register', :class => 'test', :method => "post") { "Demo" }
14
+ assert_has_tag(:form, :class => "test") { actual_html }
15
+ assert_has_tag('form input', :type => 'hidden', :name => '_method', :count => 0) { actual_html }
16
+ end
17
+
18
+ should "display correct text inputs within form_tag" do
19
+ actual_html = form_tag('/register', :class => 'test') { text_field_tag(:username) }
20
+ assert_has_tag('form input', :type => 'text', :name => "username") { actual_html }
21
+ end
22
+
23
+ should "display correct form with method :put" do
24
+ actual_html = form_tag('/update', :class => 'put-form', :method => "put") { "Demo" }
25
+ assert_has_tag(:form, :class => "put-form", :method => 'post') { actual_html }
26
+ assert_has_tag('form input', :type => 'hidden', :name => "_method", :value => 'put') { actual_html }
27
+ end
28
+
29
+ should "display correct form with method :delete" do
30
+ actual_html = form_tag('/remove', :class => 'delete-form', :method => "delete") { "Demo" }
31
+ assert_has_tag(:form, :class => "delete-form", :method => 'post') { actual_html }
32
+ assert_has_tag('form input', :type => 'hidden', :name => "_method", :value => 'delete') { actual_html }
33
+ end
34
+
35
+ should "display correct form with multipart encoding" do
36
+ actual_html = form_tag('/remove', :multipart => true) { "Demo" }
37
+ assert_has_tag(:form, :enctype => "multipart/form-data") { actual_html }
38
+ end
39
+
40
+ should "display correct forms in erb" do
41
+ visit '/erb/form_tag'
42
+ assert_have_selector 'form.simple-form', :action => '/simple'
43
+ assert_have_selector 'form.advanced-form', :action => '/advanced', :id => 'advanced', :method => 'get'
44
+ end
45
+
46
+ should "display correct forms in haml" do
47
+ visit '/haml/form_tag'
48
+ assert_have_selector 'form.simple-form', :action => '/simple'
49
+ assert_have_selector 'form.advanced-form', :action => '/advanced', :id => 'advanced', :method => 'get'
50
+ end
51
+ end
52
+
53
+ context 'for #field_set_tag method' do
54
+ should "display correct field_sets in ruby" do
55
+ actual_html = field_set_tag("Basic", :class => 'basic') { "Demo" }
56
+ assert_has_tag(:fieldset, :class => 'basic') { actual_html }
57
+ assert_has_tag('fieldset legend', :content => "Basic") { actual_html }
58
+ end
59
+
60
+ should "display correct field_sets in erb" do
61
+ visit '/erb/form_tag'
62
+ assert_have_selector 'form.simple-form fieldset', :count => 1
63
+ assert_have_no_selector 'form.simple-form fieldset legend'
64
+ assert_have_selector 'form.advanced-form fieldset', :count => 1, :class => 'advanced-field-set'
65
+ assert_have_selector 'form.advanced-form fieldset legend', :content => "Advanced"
66
+ end
67
+
68
+ should "display correct field_sets in haml" do
69
+ visit '/haml/form_tag'
70
+ assert_have_selector 'form.simple-form fieldset', :count => 1
71
+ assert_have_no_selector 'form.simple-form fieldset legend'
72
+ assert_have_selector 'form.advanced-form fieldset', :count => 1, :class => 'advanced-field-set'
73
+ assert_have_selector 'form.advanced-form fieldset legend', :content => "Advanced"
74
+ end
75
+ end
76
+
77
+ context 'for #error_messages_for method' do
78
+ should "display correct error messages list in ruby" do
79
+ user = stub(:class => "User", :errors => stub(:full_messages => ["1", "2"], :none? => false), :blank? => false)
80
+ actual_html = error_messages_for(user)
81
+ assert_has_tag('div.field-errors') { actual_html }
82
+ assert_has_tag('div.field-errors p', :content => "The user could not be saved") { actual_html }
83
+ assert_has_tag('div.field-errors ul.errors-list') { actual_html }
84
+ assert_has_tag('div.field-errors ul.errors-list li', :count => 2) { actual_html }
85
+ end
86
+
87
+ should "display correct error messages list in erb" do
88
+ visit '/erb/form_tag'
89
+ assert_have_no_selector 'form.simple-form .field-errors'
90
+ assert_have_selector 'form.advanced-form .field-errors'
91
+ assert_have_selector 'form.advanced-form .field-errors p', :content => "There are problems with saving user!"
92
+ assert_have_selector 'form.advanced-form .field-errors ul.errors-list'
93
+ assert_have_selector 'form.advanced-form .field-errors ul.errors-list li', :count => 3
94
+ assert_have_selector 'form.advanced-form .field-errors ul.errors-list li', :content => "This is a second fake error"
95
+ end
96
+
97
+ should "display correct error messages list in haml" do
98
+ visit '/haml/form_tag'
99
+ assert_have_no_selector 'form.simple-form .field-errors'
100
+ assert_have_selector 'form.advanced-form .field-errors'
101
+ assert_have_selector 'form.advanced-form .field-errors p', :content => "There are problems with saving user!"
102
+ assert_have_selector 'form.advanced-form .field-errors ul.errors-list'
103
+ assert_have_selector 'form.advanced-form .field-errors ul.errors-list li', :count => 3
104
+ assert_have_selector 'form.advanced-form .field-errors ul.errors-list li', :content => "This is a second fake error"
105
+ end
106
+ end
107
+
108
+ context 'for #label_tag method' do
109
+ should "display label tag in ruby" do
110
+ actual_html = label_tag(:username, :class => 'long-label', :caption => "Nickname")
111
+ assert_has_tag(:label, :for => 'username', :class => 'long-label', :content => "Nickname: ") { actual_html }
112
+ end
113
+
114
+ should "display label tag in erb for simple form" do
115
+ visit '/erb/form_tag'
116
+ assert_have_selector 'form.simple-form label', :count => 4
117
+ assert_have_selector 'form.simple-form label', :content => "Username", :for => 'username'
118
+ assert_have_selector 'form.simple-form label', :content => "Password", :for => 'password'
119
+ assert_have_selector 'form.simple-form label', :content => "Gender", :for => 'gender'
120
+ end
121
+ should "display label tag in erb for advanced form" do
122
+ visit '/erb/form_tag'
123
+ assert_have_selector 'form.advanced-form label', :count => 6
124
+ assert_have_selector 'form.advanced-form label.first', :content => "Nickname", :for => 'username'
125
+ assert_have_selector 'form.advanced-form label.first', :content => "Password", :for => 'password'
126
+ assert_have_selector 'form.advanced-form label.about', :content => "About Me", :for => 'about'
127
+ assert_have_selector 'form.advanced-form label.photo', :content => "Photo" , :for => 'photo'
128
+ assert_have_selector 'form.advanced-form label.gender', :content => "Gender" , :for => 'gender'
129
+ end
130
+
131
+ should "display label tag in haml for simple form" do
132
+ visit '/haml/form_tag'
133
+ assert_have_selector 'form.simple-form label', :count => 4
134
+ assert_have_selector 'form.simple-form label', :content => "Username", :for => 'username'
135
+ assert_have_selector 'form.simple-form label', :content => "Password", :for => 'password'
136
+ assert_have_selector 'form.simple-form label', :content => "Gender", :for => 'gender'
137
+ end
138
+ should "display label tag in haml for advanced form" do
139
+ visit '/haml/form_tag'
140
+ assert_have_selector 'form.advanced-form label', :count => 6
141
+ assert_have_selector 'form.advanced-form label.first', :content => "Nickname", :for => 'username'
142
+ assert_have_selector 'form.advanced-form label.first', :content => "Password", :for => 'password'
143
+ assert_have_selector 'form.advanced-form label.about', :content => "About Me", :for => 'about'
144
+ assert_have_selector 'form.advanced-form label.photo', :content => "Photo" , :for => 'photo'
145
+ assert_have_selector 'form.advanced-form label.gender', :content => "Gender" , :for => 'gender'
146
+ end
147
+ end
148
+
149
+ context 'for #hidden_field_tag method' do
150
+ should "display hidden field in ruby" do
151
+ actual_html = hidden_field_tag(:session_key, :id => 'session_id', :value => '56768')
152
+ assert_has_tag(:input, :type => 'hidden', :id => "session_id", :name => 'session_key', :value => '56768') { actual_html }
153
+ end
154
+
155
+ should "display hidden field in erb" do
156
+ visit '/erb/form_tag'
157
+ assert_have_selector 'form.simple-form input[type=hidden]', :count => 1, :name => 'session_id', :value => "__secret__"
158
+ assert_have_selector 'form.advanced-form input[type=hidden]', :count => 1, :name => 'session_id', :value => "__secret__"
159
+ end
160
+
161
+ should "display hidden field in haml" do
162
+ visit '/haml/form_tag'
163
+ assert_have_selector 'form.simple-form input[type=hidden]', :count => 1, :name => 'session_id', :value => "__secret__"
164
+ assert_have_selector 'form.advanced-form input[type=hidden]', :count => 1, :name => 'session_id', :value => "__secret__"
165
+ end
166
+ end
167
+
168
+ context 'for #text_field_tag method' do
169
+ should "display text field in ruby" do
170
+ actual_html = text_field_tag(:username, :class => 'long')
171
+ assert_has_tag(:input, :type => 'text', :class => "long", :name => 'username') { actual_html }
172
+ end
173
+
174
+ should "display text field in erb" do
175
+ visit '/erb/form_tag'
176
+ assert_have_selector 'form.simple-form input[type=text]', :count => 1, :name => 'username'
177
+ assert_have_selector 'form.advanced-form fieldset input[type=text]', :count => 1, :name => 'username', :id => 'the_username'
178
+ end
179
+
180
+ should "display text field in haml" do
181
+ visit '/haml/form_tag'
182
+ assert_have_selector 'form.simple-form input[type=text]', :count => 1, :name => 'username'
183
+ assert_have_selector 'form.advanced-form fieldset input[type=text]', :count => 1, :name => 'username', :id => 'the_username'
184
+ end
185
+ end
186
+
187
+ context 'for #text_area_tag method' do
188
+ should "display text area in ruby" do
189
+ actual_html = text_area_tag(:about, :class => 'long')
190
+ assert_has_tag(:textarea, :class => "long", :name => 'about') { actual_html }
191
+ end
192
+
193
+ should "display text area in erb" do
194
+ visit '/erb/form_tag'
195
+ assert_have_selector 'form.advanced-form textarea', :count => 1, :name => 'about', :class => 'large'
196
+ end
197
+
198
+ should "display text area in haml" do
199
+ visit '/haml/form_tag'
200
+ assert_have_selector 'form.advanced-form textarea', :count => 1, :name => 'about', :class => 'large'
201
+ end
202
+ end
203
+
204
+ context 'for #password_field_tag method' do
205
+ should "display password field in ruby" do
206
+ actual_html = password_field_tag(:password, :class => 'long')
207
+ assert_has_tag(:input, :type => 'password', :class => "long", :name => 'password') { actual_html }
208
+ end
209
+
210
+ should "display password field in erb" do
211
+ visit '/erb/form_tag'
212
+ assert_have_selector 'form.simple-form input[type=password]', :count => 1, :name => 'password'
213
+ assert_have_selector 'form.advanced-form input[type=password]', :count => 1, :name => 'password'
214
+ end
215
+
216
+ should "display password field in haml" do
217
+ visit '/haml/form_tag'
218
+ assert_have_selector 'form.simple-form input[type=password]', :count => 1, :name => 'password'
219
+ assert_have_selector 'form.advanced-form input[type=password]', :count => 1, :name => 'password'
220
+ end
221
+ end
222
+
223
+ context 'for #file_field_tag method' do
224
+ should "display file field in ruby" do
225
+ actual_html = file_field_tag(:photo, :class => 'photo')
226
+ assert_has_tag(:input, :type => 'file', :class => "photo", :name => 'photo') { actual_html }
227
+ end
228
+
229
+ should "display file field in erb" do
230
+ visit '/erb/form_tag'
231
+ assert_have_selector 'form.advanced-form input[type=file]', :count => 1, :name => 'photo', :class => 'upload'
232
+ end
233
+
234
+ should "display file field in haml" do
235
+ visit '/haml/form_tag'
236
+ assert_have_selector 'form.advanced-form input[type=file]', :count => 1, :name => 'photo', :class => 'upload'
237
+ end
238
+ end
239
+
240
+ context "for #check_box_tag method" do
241
+ should "display check_box tag in ruby" do
242
+ actual_html = check_box_tag("clear_session")
243
+ assert_has_tag(:input, :type => 'checkbox', :value => '1', :name => 'clear_session') { actual_html }
244
+ assert_has_no_tag(:input, :type => 'hidden') { actual_html }
245
+ end
246
+
247
+ should "display check_box tag in ruby with extended attributes" do
248
+ actual_html = check_box_tag("clear_session", :disabled => true, :checked => true)
249
+ assert_has_tag(:input, :type => 'checkbox', :disabled => 'disabled', :checked => 'checked') { actual_html }
250
+ end
251
+
252
+ should "display check_box tag in erb" do
253
+ visit '/erb/form_tag'
254
+ assert_have_selector 'form.simple-form input[type=checkbox]', :count => 1
255
+ assert_have_selector 'form.advanced-form input[type=checkbox]', :value => "1", :checked => 'checked'
256
+ end
257
+
258
+ should "display check_box tag in haml" do
259
+ visit '/haml/form_tag'
260
+ assert_have_selector 'form.simple-form input[type=checkbox]', :count => 1
261
+ assert_have_selector 'form.advanced-form input[type=checkbox]', :value => "1", :checked => 'checked'
262
+ end
263
+ end
264
+
265
+ context "for #radio_button_tag method" do
266
+ should "display radio_button tag in ruby" do
267
+ actual_html = radio_button_tag("gender", :value => 'male')
268
+ assert_has_tag(:input, :type => 'radio', :value => 'male', :name => 'gender') { actual_html }
269
+ end
270
+
271
+ should "display radio_button tag in ruby with extended attributes" do
272
+ actual_html = radio_button_tag("gender", :disabled => true, :checked => true)
273
+ assert_has_tag(:input, :type => 'radio', :disabled => 'disabled', :checked => 'checked') { actual_html }
274
+ end
275
+
276
+ should "display radio_button tag in erb" do
277
+ visit '/erb/form_tag'
278
+ assert_have_selector 'form.simple-form input[type=radio]', :count => 1, :value => 'male'
279
+ assert_have_selector 'form.simple-form input[type=radio]', :count => 1, :value => 'female'
280
+ assert_have_selector 'form.advanced-form input[type=radio]', :value => "male", :checked => 'checked'
281
+ assert_have_selector 'form.advanced-form input[type=radio]', :value => "female"
282
+ end
283
+
284
+ should "display radio_button tag in haml" do
285
+ visit '/haml/form_tag'
286
+ assert_have_selector 'form.simple-form input[type=radio]', :count => 1, :value => 'male'
287
+ assert_have_selector 'form.simple-form input[type=radio]', :count => 1, :value => 'female'
288
+ assert_have_selector 'form.advanced-form input[type=radio]', :value => "male", :checked => 'checked'
289
+ assert_have_selector 'form.advanced-form input[type=radio]', :value => "female"
290
+ end
291
+ end
292
+
293
+ context "for #select_tag method" do
294
+ should "display select tag in ruby" do
295
+ actual_html = select_tag(:favorite_color, :options => ['green', 'blue', 'black'], :include_blank => true)
296
+ assert_has_tag(:select, :name => 'favorite_color') { actual_html }
297
+ assert_has_tag('select option:first-child', :content => '') { actual_html }
298
+ assert_has_tag('select option', :content => 'green', :value => 'green') { actual_html }
299
+ assert_has_tag('select option', :content => 'blue', :value => 'blue') { actual_html }
300
+ assert_has_tag('select option', :content => 'black', :value => 'black') { actual_html }
301
+ end
302
+
303
+ should "display select tag in ruby with extended attributes" do
304
+ actual_html = select_tag(:favorite_color, :disabled => true, :options => ['only', 'option'])
305
+ assert_has_tag(:select, :disabled => 'disabled') { actual_html }
306
+ end
307
+
308
+ should "display select tag in ruby with multiple attribute" do
309
+ actual_html = select_tag(:favorite_color, :multiple => true, :options => ['only', 'option'])
310
+ assert_has_tag(:select, :multiple => 'multiple', :name => 'favorite_color[]') { actual_html }
311
+ end
312
+
313
+ should "display options with values and selected" do
314
+ options = [['Green', 'green1'], ['Blue', 'blue1'], ['Black', "black1"]]
315
+ actual_html = select_tag(:favorite_color, :options => options, :selected => 'green1')
316
+ assert_has_tag(:select, :name => 'favorite_color') { actual_html }
317
+ assert_has_tag('select option', :selected => 'selected', :count => 1) { actual_html }
318
+ assert_has_tag('select option', :content => 'Green', :value => 'green1', :selected => 'selected') { actual_html }
319
+ assert_has_tag('select option', :content => 'Blue', :value => 'blue1') { actual_html }
320
+ assert_has_tag('select option', :content => 'Black', :value => 'black1') { actual_html }
321
+ end
322
+
323
+ should "display select tag in erb" do
324
+ visit '/erb/form_tag'
325
+ assert_have_selector 'form.simple-form select', :count => 1, :name => 'color'
326
+ assert_have_selector('select option', :content => 'green', :value => 'green')
327
+ assert_have_selector('select option', :content => 'orange', :value => 'orange')
328
+ assert_have_selector('select option', :content => 'purple', :value => 'purple')
329
+ assert_have_selector 'form.advanced-form select', :name => 'fav_color'
330
+ assert_have_selector('select option', :content => 'green', :value => '1')
331
+ assert_have_selector('select option', :content => 'orange', :value => '2', :selected => 'selected')
332
+ assert_have_selector('select option', :content => 'purple', :value => '3')
333
+ end
334
+
335
+ should "display select tag in haml" do
336
+ visit '/haml/form_tag'
337
+ assert_have_selector 'form.simple-form select', :count => 1, :name => 'color'
338
+ assert_have_selector('select option', :content => 'green', :value => 'green')
339
+ assert_have_selector('select option', :content => 'orange', :value => 'orange')
340
+ assert_have_selector('select option', :content => 'purple', :value => 'purple')
341
+ assert_have_selector 'form.advanced-form select', :name => 'fav_color'
342
+ assert_have_selector('select option', :content => 'green', :value => '1')
343
+ assert_have_selector('select option', :content => 'orange', :value => '2', :selected => 'selected')
344
+ assert_have_selector('select option', :content => 'purple', :value => '3')
345
+ end
346
+ end
347
+
348
+ context 'for #submit_tag method' do
349
+ should "display submit tag in ruby" do
350
+ actual_html = submit_tag("Update", :class => 'success')
351
+ assert_has_tag(:input, :type => 'submit', :class => "success", :value => 'Update') { actual_html }
352
+ end
353
+
354
+ should "display submit tag in erb" do
355
+ visit '/erb/form_tag'
356
+ assert_have_selector 'form.simple-form input[type=submit]', :count => 1, :value => "Submit"
357
+ assert_have_selector 'form.advanced-form input[type=submit]', :count => 1, :value => "Login"
358
+ end
359
+
360
+ should "display submit tag in haml" do
361
+ visit '/haml/form_tag'
362
+ assert_have_selector 'form.simple-form input[type=submit]', :count => 1, :value => "Submit"
363
+ assert_have_selector 'form.advanced-form input[type=submit]', :count => 1, :value => "Login"
364
+ end
365
+ end
366
+
367
+ context 'for #button_tag method' do
368
+ should "display submit tag in ruby" do
369
+ actual_html = button_tag("Cancel", :class => 'clear')
370
+ assert_has_tag(:input, :type => 'button', :class => "clear", :value => 'Cancel') { actual_html }
371
+ end
372
+
373
+ should "display submit tag in erb" do
374
+ visit '/erb/form_tag'
375
+ assert_have_selector 'form.advanced-form input[type=button]', :count => 1, :value => "Cancel"
376
+ end
377
+
378
+ should "display submit tag in haml" do
379
+ visit '/haml/form_tag'
380
+ assert_have_selector 'form.advanced-form input[type=button]', :count => 1, :value => "Cancel"
381
+ end
382
+ end
383
+
384
+ context 'for #image_submit_tag method' do
385
+ should "display image submit tag in ruby with relative path" do
386
+ actual_html = image_submit_tag('buttons/ok.png', :class => 'success')
387
+ assert_has_tag(:input, :type => 'image', :class => "success", :src => '/images/buttons/ok.png') { actual_html }
388
+ end
389
+
390
+ should "display image submit tag in ruby with absolute path" do
391
+ actual_html = image_submit_tag('/system/ok.png', :class => 'success')
392
+ assert_has_tag(:input, :type => 'image', :class => "success", :src => '/system/ok.png') { actual_html }
393
+ end
394
+
395
+ should "display image submit tag in erb" do
396
+ visit '/erb/form_tag'
397
+ assert_have_selector 'form.advanced-form input[type=image]', :count => 1, :src => "/images/buttons/submit.png"
398
+ end
399
+
400
+ should "display image submit tag in haml" do
401
+ visit '/haml/form_tag'
402
+ assert_have_selector 'form.advanced-form input[type=image]', :count => 1, :src => "/images/buttons/submit.png"
403
+ end
404
+ end
405
+
406
+ end
@@ -0,0 +1,96 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+ require File.dirname(__FILE__) + '/fixtures/markup_app/app'
3
+
4
+ class TestFormatHelpers < Test::Unit::TestCase
5
+ def app
6
+ MarkupDemo.tap { |app| app.set :environment, :test }
7
+ end
8
+
9
+ include Padrino::Helpers::FormatHelpers
10
+
11
+ context 'for #h and #h! method' do
12
+ should "escape the simple html" do
13
+ assert_equal '&lt;h1&gt;hello&lt;/h1&gt;', h('<h1>hello</h1>')
14
+ assert_equal '&lt;h1&gt;hello&lt;/h1&gt;', escape_html('<h1>hello</h1>')
15
+ end
16
+ should "escape all brackets, quotes and ampersands" do
17
+ assert_equal '&lt;h1&gt;&lt;&gt;&quot;&amp;demo&amp;&quot;&lt;&gt;&lt;/h1&gt;', h('<h1><>"&demo&"<></h1>')
18
+ end
19
+ should "return default text if text is empty" do
20
+ assert_equal 'default', h!("", "default")
21
+ assert_equal '&nbsp;', h!("")
22
+ end
23
+ should "return text escaped if not empty" do
24
+ assert_equal '&lt;h1&gt;hello&lt;/h1&gt;', h!('<h1>hello</h1>')
25
+ end
26
+ end
27
+
28
+ context 'for #time_in_words method' do
29
+ should "display today" do
30
+ assert_equal 'today', time_in_words(Time.now)
31
+ end
32
+ should "display yesterday" do
33
+ assert_equal 'yesterday', time_in_words(1.day.ago)
34
+ end
35
+ should "display tomorrow" do
36
+ assert_equal 'tomorrow', time_in_words(1.day.from_now)
37
+ end
38
+ should "return future number of days" do
39
+ assert_equal 'in 4 days', time_in_words(4.days.from_now)
40
+ end
41
+ should "return past days ago" do
42
+ assert_equal '4 days ago', time_in_words(4.days.ago)
43
+ end
44
+ should "return formatted archived date" do
45
+ assert_equal 100.days.ago.strftime('%A, %B %e'), time_in_words(100.days.ago)
46
+ end
47
+ should "return formatted archived year date" do
48
+ assert_equal 500.days.ago.strftime('%A, %B %e, %Y'), time_in_words(500.days.ago)
49
+ end
50
+ end
51
+
52
+ context 'for #relative_time_ago method' do
53
+ should 'display now as a minute ago' do
54
+ assert_equal 'about a minute', relative_time_ago(1.minute.ago)
55
+ end
56
+ should "display a few minutes ago" do
57
+ assert_equal '4 minutes', relative_time_ago(4.minute.ago)
58
+ end
59
+ should "display an hour ago" do
60
+ assert_equal 'about 1 hour', relative_time_ago(1.hour.ago + 5.minutes.ago.sec)
61
+ end
62
+ should "display a few hours ago" do
63
+ assert_equal 'about 3 hours', relative_time_ago(3.hour.ago + 5.minutes.ago.sec)
64
+ end
65
+ should "display a day ago" do
66
+ assert_equal '1 day', relative_time_ago(1.day.ago)
67
+ end
68
+ should "display a few days ago" do
69
+ assert_equal '5 days', relative_time_ago(5.days.ago - 5.minutes.ago.sec)
70
+ end
71
+ should "display a month ago" do
72
+ assert_equal 'about 1 month', relative_time_ago(32.days.ago + 5.minutes.ago.sec)
73
+ end
74
+ should "display a few months ago" do
75
+ assert_equal '6 months', relative_time_ago(180.days.ago - 5.minutes.ago.sec)
76
+ end
77
+ should "display a year ago" do
78
+ assert_equal 'about 1 year', relative_time_ago(365.days.ago - 5.minutes.ago.sec)
79
+ end
80
+ should "display a few years ago" do
81
+ assert_equal 'over 7 years', relative_time_ago(2800.days.ago - 5.minutes.ago.sec)
82
+ end
83
+ end
84
+
85
+ context 'for #escape_javascript method' do
86
+ should "escape double quotes" do
87
+ assert_equal "\"hello\"", escape_javascript('"hello"')
88
+ end
89
+ should "escape single quotes" do
90
+ assert_equal "\"hello\"", escape_javascript("'hello'")
91
+ end
92
+ should "escape html tags and breaks" do
93
+ assert_equal "\"\\n<p>hello<\\/p>\\n\"", escape_javascript("\n\r<p>hello</p>\r\n")
94
+ end
95
+ end
96
+ end