any_view 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. data/.document +5 -0
  2. data/.gitignore +21 -0
  3. data/LICENSE +47 -0
  4. data/README.rdoc +369 -0
  5. data/Rakefile +57 -0
  6. data/lib/any_view/asset_tag_helpers.rb +103 -0
  7. data/lib/any_view/core_ext/array.rb +7 -0
  8. data/lib/any_view/core_ext/hash.rb +41 -0
  9. data/lib/any_view/core_ext/string.rb +17 -0
  10. data/lib/any_view/form_builder/abstract_form_builder.rb +128 -0
  11. data/lib/any_view/form_builder/standard_form_builder.rb +37 -0
  12. data/lib/any_view/form_helpers.rb +217 -0
  13. data/lib/any_view/format_helpers.rb +49 -0
  14. data/lib/any_view/tag_helpers.rb +47 -0
  15. data/lib/any_view/tilt_base.rb +94 -0
  16. data/lib/any_view.rb +30 -0
  17. data/test/fixtures/basic_form_for.erb +3 -0
  18. data/test/fixtures/builder_type_form_for.erb +3 -0
  19. data/test/fixtures/capture_concat.erb +14 -0
  20. data/test/fixtures/capture_concat.haml +13 -0
  21. data/test/fixtures/content_for.erb +11 -0
  22. data/test/fixtures/content_for.haml +9 -0
  23. data/test/fixtures/content_tag.erb +11 -0
  24. data/test/fixtures/content_tag.haml +9 -0
  25. data/test/fixtures/delete_form_for.erb +3 -0
  26. data/test/fixtures/field_set_tag.erb +3 -0
  27. data/test/fixtures/fields_for.erb +8 -0
  28. data/test/fixtures/fields_for.haml +6 -0
  29. data/test/fixtures/fields_for_basic.erb +3 -0
  30. data/test/fixtures/fields_for_nil.erb +3 -0
  31. data/test/fixtures/form_for.erb +56 -0
  32. data/test/fixtures/form_for.haml +47 -0
  33. data/test/fixtures/form_for_nil.erb +3 -0
  34. data/test/fixtures/form_tag.erb +57 -0
  35. data/test/fixtures/form_tag.haml +45 -0
  36. data/test/fixtures/form_tag_methods.erb +19 -0
  37. data/test/fixtures/form_tag_methods.haml +15 -0
  38. data/test/fixtures/link_to.erb +5 -0
  39. data/test/fixtures/link_to.haml +4 -0
  40. data/test/fixtures/mail_to.erb +3 -0
  41. data/test/fixtures/mail_to.haml +3 -0
  42. data/test/fixtures/multipart.erb +12 -0
  43. data/test/fixtures/multipart_form_for.erb +3 -0
  44. data/test/fixtures/put_form_for.erb +3 -0
  45. data/test/fixtures/standard_form_builder.erb +3 -0
  46. data/test/helper.rb +121 -0
  47. data/test/test_asset_tag_helpers.rb +176 -0
  48. data/test/test_form_builder.rb +607 -0
  49. data/test/test_form_helpers.rb +453 -0
  50. data/test/test_format_helpers.rb +59 -0
  51. data/test/test_tag_helpers.rb +65 -0
  52. metadata +160 -0
@@ -0,0 +1,607 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ class TestFormBuilder < Test::Unit::TestCase
4
+ def setup
5
+ error_stub = stub(:full_messages => ["1", "2"], :none? => false)
6
+ role_types = [stub(:name => 'Admin', :id => 1), stub(:name => 'Moderate', :id => 2), stub(:name => 'Limited', :id => 3)]
7
+ @user = stub(:errors => error_stub, :class => 'User', :first_name => "Joe", :session_id => 54)
8
+ @user.stubs(:role_types => role_types, :role => "1")
9
+ @user_none = stub(:errors => stub(:none? => true), :class => 'User')
10
+
11
+ Renderer::ViewContext.class_eval do
12
+ unless method_defined?(:standard_builder)
13
+ def standard_builder(object = nil)
14
+ AnyView::Helpers::FormBuilder::StandardFormBuilder.new(self, object)
15
+ end
16
+ end
17
+ end
18
+ end
19
+
20
+ def teardown
21
+ Renderer::ViewContext.class_eval do
22
+ undef :standard_builder
23
+ end
24
+ end
25
+
26
+ def standard_builder(object=@user)
27
+ view_context.standard_builder(object)
28
+ end
29
+
30
+ context 'for #form_for method' do
31
+ should "display correct form html" do
32
+ result = render("basic_form_for.erb")
33
+ assert_has_tag('form', :action => '/register', :id => 'register', :method => 'post', :content => "Demo") { result }
34
+ assert_has_tag('form input[type=hidden]', :name => '_method', :count => 0) { result } # no method action field
35
+ end
36
+
37
+ should "display correct form html with method :put" do
38
+ actual_html = render("put_form_for.erb")
39
+ assert_has_tag('form', :action => '/update', :method => 'post') { actual_html }
40
+ assert_has_tag('form input', :type => 'hidden', :name => "_method", :value => 'put') { actual_html }
41
+ end
42
+
43
+ should "display correct form html with method :delete" do
44
+ actual_html = render("delete_form_for.erb")
45
+ assert_has_tag('form', :action => '/destroy', :method => 'get') { actual_html }
46
+ assert_has_tag('form input', :type => 'hidden', :name => "_method", :value => 'delete') { actual_html }
47
+ end
48
+
49
+ should "display correct form html with multipart" do
50
+ actual_html = render("multipart_form_for.erb")
51
+ assert_has_tag('form', :action => '/register', :enctype => "multipart/form-data") { actual_html }
52
+ end
53
+
54
+ should "support changing form builder type" do
55
+
56
+ form_html = lambda { render("builder_type_form_for.erb") }
57
+ assert_raise(NoMethodError) { form_html.call }
58
+ end
59
+
60
+ should "support using default standard builder" do
61
+ actual_html = render("standard_form_builder.erb")
62
+ assert_has_tag('form p input[type=text]') { actual_html }
63
+ end
64
+
65
+ should "display fail for form with nil object" do
66
+ assert_raises(RuntimeError) { render("form_for_nil.erb") }
67
+ end
68
+
69
+ should "display correct form in haml" do
70
+ result = render("form_for.haml")
71
+ assert_has_selector(:form, :action => '/demo', :id => 'demo'){result}
72
+ assert_has_selector(:form, :action => '/another_demo', :id => 'demo2', :method => 'get'){result}
73
+ assert_has_selector(:form, :action => '/third_demo', :id => 'demo3', :method => 'get'){result}
74
+ end
75
+
76
+ should "display correct form in erb" do
77
+ result = render("form_for.erb")
78
+ assert_has_selector(:form, :action => '/demo', :id => 'demo'){result}
79
+ assert_has_selector(:form, :action => '/another_demo', :id => 'demo2', :method => 'get'){result}
80
+ assert_has_selector(:form, :action => '/third_demo', :id => 'demo3', :method => 'get'){result}
81
+ end
82
+ end
83
+
84
+ context 'for #fields_for method' do
85
+ should 'display correct fields html' do
86
+ actual_html = render("fields_for_basic.erb")
87
+ assert_has_tag(:input, :type => 'text', :name => 'markup_user[first_name]', :id => 'markup_user_first_name') { actual_html }
88
+ end
89
+
90
+ should "display fail for nil object" do
91
+ assert_raises(RuntimeError) { render('fields_for_nil.erb')}
92
+ end
93
+
94
+ should 'display correct simple fields in haml' do
95
+ result = render("fields_for.haml")
96
+ assert_has_selector(:form, :action => '/demo1', :id => 'demo-fields-for'){result}
97
+ assert_has_selector('#demo-fields-for input', :type => 'text', :name => 'markup_user[gender]', :value => 'male'){result}
98
+ assert_has_selector('#demo-fields-for input', :type => 'checkbox', :name => 'permission[can_edit]', :value => '1', :checked => 'checked'){result}
99
+ assert_has_selector('#demo-fields-for input', :type => 'checkbox', :name => 'permission[can_delete]'){result}
100
+ end
101
+
102
+ should "display correct simple fields in erb" do
103
+ result = render("fields_for.erb")
104
+ assert_has_selector(:form, :action => '/demo1', :id => 'demo-fields-for'){result}
105
+ assert_has_selector('#demo-fields-for input', :type => 'text', :name => 'markup_user[gender]', :value => 'male'){result}
106
+ assert_has_selector('#demo-fields-for input', :type => 'checkbox', :name => 'permission[can_edit]', :value => '1', :checked => 'checked'){result}
107
+ assert_has_selector('#demo-fields-for input', :type => 'checkbox', :name => 'permission[can_delete]'){result}
108
+ end
109
+ end
110
+
111
+ # ===========================
112
+ # AbstractFormBuilder
113
+ # ===========================
114
+
115
+ context 'for #error_messages method' do
116
+ should "display correct form html with no record" do
117
+ actual_html = standard_builder(@user_none).error_messages(:header_message => "Demo form cannot be saved")
118
+ assert actual_html.blank?
119
+ end
120
+
121
+ should "display correct form html with valid record" do
122
+ actual_html = standard_builder(@user).error_messages(:header_message => "Demo form cannot be saved")
123
+ assert_has_tag('div.field-errors p', :content => "Demo form cannot be saved") { actual_html }
124
+ assert_has_tag('div.field-errors ul.errors-list li', :content => "1") { actual_html }
125
+ assert_has_tag('div.field-errors ul.errors-list li', :content => "2") { actual_html }
126
+ end
127
+
128
+ should "display correct form in haml" do
129
+ result = render("form_for.haml")
130
+ assert_has_selector('#demo div.field-errors p', :content => "custom MarkupUser cannot be saved!"){result}
131
+ assert_has_selector('#demo div.field-errors ul.errors-list li', :content => "This is a fake error"){result}
132
+ assert_has_selector('#demo2 div.field-errors p', :content => "custom MarkupUser cannot be saved!"){result}
133
+ assert_has_selector('#demo2 div.field-errors ul.errors-list li', :content => "This is a fake error"){result}
134
+ end
135
+
136
+ should "display correct form in erb" do
137
+ result = render("form_for.erb")
138
+ assert_has_selector('#demo div.field-errors p', :content => "custom MarkupUser cannot be saved!"){result}
139
+ assert_has_selector('#demo div.field-errors ul.errors-list li', :content => "This is a fake error"){result}
140
+ assert_has_selector('#demo2 div.field-errors p', :content => "custom MarkupUser cannot be saved!"){result}
141
+ assert_has_selector('#demo2 div.field-errors ul.errors-list li', :content => "This is a fake error"){result}
142
+ end
143
+ end
144
+
145
+ context 'for #label method' do
146
+ should "display correct label html" do
147
+ actual_html = standard_builder(@user).label(:first_name, :class => 'large', :caption => "F. Name")
148
+ assert_has_tag('label', :class => 'large', :for => 'user_first_name', :content => "F. Name: ") { actual_html }
149
+ end
150
+
151
+ should "display correct label in haml" do
152
+ result = render("form_for.haml")
153
+ assert_has_selector('#demo label', :content => "Login: ", :class => 'user-label'){result}
154
+ assert_has_selector('#demo label', :content => "About Me: "){result}
155
+ assert_has_selector('#demo2 label', :content => "Nickname: ", :class => 'label'){result}
156
+ end
157
+
158
+ should "display correct label in erb" do
159
+ result = render("form_for.erb")
160
+ assert_has_selector('#demo label', :content => "Login: ", :class => 'user-label'){result}
161
+ assert_has_selector('#demo label', :content => "About Me: "){result}
162
+ assert_has_selector('#demo2 label', :content => "Nickname: ", :class => 'label'){result}
163
+ end
164
+ end
165
+
166
+ context 'for #hidden_field method' do
167
+ should "display correct hidden field html" do
168
+ actual_html = standard_builder(@user).hidden_field(:session_id, :class => 'hidden')
169
+ assert_has_tag('input.hidden[type=hidden]', :value => "54", :id => 'user_session_id', :name => 'user[session_id]') { actual_html }
170
+ end
171
+
172
+ should "display correct hidden field in haml" do
173
+ result = render("form_for.haml")
174
+ assert_has_selector('#demo input[type=hidden]', :id => 'markup_user_session_id', :value => "45"){result}
175
+ assert_has_selector('#demo2 input', :type => 'hidden', :name => 'markup_user[session_id]'){result}
176
+ end
177
+
178
+ should "display correct hidden field in erb" do
179
+ result = render("form_for.erb")
180
+ assert_has_selector('#demo input[type=hidden]', :id => 'markup_user_session_id', :value => "45"){result}
181
+ assert_has_selector('#demo2 input', :type => 'hidden', :name => 'markup_user[session_id]'){result}
182
+ end
183
+ end
184
+
185
+ context 'for #text_field method' do
186
+ should "display correct text field html" do
187
+ actual_html = standard_builder(@user).text_field(:first_name, :class => 'large')
188
+ assert_has_tag('input.large[type=text]', :value => "Joe", :id => 'user_first_name', :name => 'user[first_name]') { actual_html }
189
+ end
190
+
191
+ should "display correct text field in haml" do
192
+ result = render("form_for.haml")
193
+ assert_has_selector('#demo input.user-text[type=text]', :id => 'markup_user_username', :value => "John"){result}
194
+ assert_has_selector('#demo2 input', :type => 'text', :class => 'input', :name => 'markup_user[username]'){result}
195
+ end
196
+
197
+ should "display correct text field in erb" do
198
+ result = render("form_for.erb")
199
+ assert_has_selector('#demo input.user-text[type=text]', :id => 'markup_user_username', :value => "John"){result}
200
+ assert_has_selector('#demo2 input', :type => 'text', :class => 'input', :name => 'markup_user[username]'){result}
201
+ end
202
+ end
203
+
204
+ context 'for #check_box method' do
205
+ should "display correct checkbox html" do
206
+ actual_html = standard_builder(@user).check_box(:confirm_destroy, :class => 'large')
207
+ assert_has_tag('input.large[type=checkbox]', :id => 'user_confirm_destroy', :name => 'user[confirm_destroy]') { actual_html }
208
+ assert_has_tag('input[type=hidden]', :name => 'user[confirm_destroy]', :value => '0') { actual_html }
209
+ end
210
+
211
+ should "display correct checkbox html when checked" do
212
+ actual_html = standard_builder(@user).check_box(:confirm_destroy, :checked => true)
213
+ assert_has_tag('input[type=checkbox]', :checked => 'checked', :name => 'user[confirm_destroy]') { actual_html }
214
+ end
215
+
216
+ should "display correct checkbox html as checked when object value matches" do
217
+ @user.stubs(:show_favorites => 'human')
218
+ actual_html = standard_builder(@user).check_box(:show_favorites, :value => 'human')
219
+ assert_has_tag('input[type=checkbox]', :checked => 'checked', :name => 'user[show_favorites]') { actual_html }
220
+ end
221
+
222
+ should "display correct checkbox html as checked when object value is true" do
223
+ @user.stubs(:show_favorites => true)
224
+ actual_html = standard_builder(@user).check_box(:show_favorites, :value => '1')
225
+ assert_has_tag('input[type=checkbox]', :checked => 'checked', :name => 'user[show_favorites]') { actual_html }
226
+ end
227
+
228
+ should "display correct checkbox html as unchecked when object value doesn't match" do
229
+ @user.stubs(:show_favorites => 'alien')
230
+ actual_html = standard_builder(@user).check_box(:show_favorites, :value => 'human')
231
+ assert_has_no_tag('input[type=checkbox]', :checked => 'checked') { actual_html }
232
+ end
233
+
234
+ should "display correct checkbox html as unchecked when object value is false" do
235
+ @user.stubs(:show_favorites => false)
236
+ actual_html = standard_builder(@user).check_box(:show_favorites, :value => '1')
237
+ assert_has_no_tag('input[type=checkbox]', :checked => 'checked') { actual_html }
238
+ end
239
+
240
+ should "display correct unchecked hidden field when specified" do
241
+ actual_html = standard_builder(@user).check_box(:show_favorites, :value => 'female', :uncheck_value => 'false')
242
+ assert_has_tag('input[type=hidden]', :name => 'user[show_favorites]', :value => 'false') { actual_html }
243
+ end
244
+
245
+ should "display correct checkbox in haml" do
246
+ result = render("form_for.haml")
247
+ assert_has_selector('#demo input[type=checkbox]', :checked => 'checked', :id => 'markup_user_remember_me', :name => 'markup_user[remember_me]'){result}
248
+ end
249
+
250
+ should "display correct checkbox in erb" do
251
+ result = render("form_for.erb")
252
+ assert_has_selector('#demo input[type=checkbox]', :checked => 'checked', :id => 'markup_user_remember_me', :name => 'markup_user[remember_me]'){result}
253
+ end
254
+ end
255
+
256
+ context 'for #radio_button method' do
257
+ should "display correct radio button html" do
258
+ actual_html = standard_builder(@user).radio_button(:gender, :value => 'male', :class => 'large')
259
+ assert_has_tag('input.large[type=radio]', :id => 'user_gender_male', :name => 'user[gender]', :value => 'male') { actual_html }
260
+ end
261
+
262
+ should "display correct radio button html when checked" do
263
+ actual_html = standard_builder(@user).radio_button(:gender, :checked => true)
264
+ assert_has_tag('input[type=radio]', :checked => 'checked', :name => 'user[gender]') { actual_html }
265
+ end
266
+
267
+ should "display correct radio button html as checked when object value matches" do
268
+ @user.stubs(:gender => 'male')
269
+ actual_html = standard_builder.radio_button(:gender, :value => 'male')
270
+ assert_has_tag('input[type=radio]', :checked => 'checked', :name => 'user[gender]') { actual_html }
271
+ end
272
+
273
+ should "display correct radio button html as unchecked when object value doesn't match" do
274
+ @user.stubs(:gender => 'male')
275
+ actual_html = standard_builder.radio_button(:gender, :value => 'female')
276
+ assert_has_no_tag('input[type=radio]', :checked => 'checked') { actual_html }
277
+ end
278
+
279
+ should "display correct radio button in haml" do
280
+ result = render("form_for.haml")
281
+ assert_has_selector('#demo input[type=radio]', :id => 'markup_user_gender_male', :name => 'markup_user[gender]', :value => 'male'){result}
282
+ assert_has_selector('#demo input[type=radio]', :id => 'markup_user_gender_female', :name => 'markup_user[gender]', :value => 'female'){result}
283
+ assert_has_selector('#demo input[type=radio][checked=checked]', :id => 'markup_user_gender_male'){result}
284
+ end
285
+
286
+ should "display correct radio button in erb" do
287
+ result = render("form_for.erb")
288
+ assert_has_selector('#demo input[type=radio]', :id => 'markup_user_gender_male', :name => 'markup_user[gender]', :value => 'male'){result}
289
+ assert_has_selector('#demo input[type=radio]', :id => 'markup_user_gender_female', :name => 'markup_user[gender]', :value => 'female'){result}
290
+ assert_has_selector('#demo input[type=radio][checked=checked]', :id => 'markup_user_gender_male'){result}
291
+ end
292
+ end
293
+
294
+ context 'for #text_area method' do
295
+ should "display correct text_area html" do
296
+ actual_html = standard_builder.text_area(:about, :class => 'large')
297
+ assert_has_tag('textarea.large', :id => 'user_about', :name => 'user[about]') { actual_html }
298
+ end
299
+
300
+ should "display correct text_area in haml" do
301
+ result = render("form_for.haml")
302
+ assert_has_selector('#demo textarea', :name => 'markup_user[about]', :id => 'markup_user_about', :class => 'user-about'){result}
303
+ assert_has_selector('#demo2 textarea', :name => 'markup_user[about]', :id => 'markup_user_about', :class => 'textarea'){result}
304
+ end
305
+
306
+ should "display correct text_area in erb" do
307
+ result = render("form_for.erb")
308
+ assert_has_selector('#demo textarea', :name => 'markup_user[about]', :id => 'markup_user_about', :class => 'user-about'){result}
309
+ assert_has_selector('#demo2 textarea', :name => 'markup_user[about]', :id => 'markup_user_about', :class => 'textarea'){result}
310
+ end
311
+ end
312
+
313
+ context 'for #password_field method' do
314
+ should "display correct password_field html" do
315
+ actual_html = standard_builder.password_field(:code, :class => 'large')
316
+ assert_has_tag('input.large[type=password]', :id => 'user_code', :name => 'user[code]') { actual_html }
317
+ end
318
+
319
+ should "display correct password_field in haml" do
320
+ result = render("form_for.haml")
321
+ assert_has_selector('#demo input', :type => 'password', :class => 'user-password', :value => 'secret'){result}
322
+ assert_has_selector('#demo2 input', :type => 'password', :class => 'input', :name => 'markup_user[code]'){result}
323
+ end
324
+
325
+ should "display correct password_field in erb" do
326
+ result = render("form_for.erb")
327
+ assert_has_selector('#demo input', :type => 'password', :class => 'user-password', :value => 'secret'){result}
328
+ assert_has_selector('#demo2 input', :type => 'password', :class => 'input', :name => 'markup_user[code]'){result}
329
+ end
330
+ end
331
+
332
+ context 'for #file_field method' do
333
+ should "display correct file_field html" do
334
+ actual_html = standard_builder.file_field(:photo, :class => 'large')
335
+ assert_has_tag('input.large[type=file]', :id => 'user_photo', :name => 'user[photo]') { actual_html }
336
+ end
337
+
338
+ should "display correct file_field in haml" do
339
+ result = render("form_for.haml")
340
+ assert_has_selector('#demo input.user-photo', :type => 'file', :name => 'markup_user[photo]', :id => 'markup_user_photo'){result}
341
+ assert_has_selector('#demo2 input.upload', :type => 'file', :name => 'markup_user[photo]', :id => 'markup_user_photo'){result}
342
+ end
343
+
344
+ should "display correct file_field in erb" do
345
+ result = render("form_for.erb")
346
+ assert_has_selector('#demo input.user-photo', :type => 'file', :name => 'markup_user[photo]', :id => 'markup_user_photo'){result}
347
+ assert_has_selector('#demo2 input.upload', :type => 'file', :name => 'markup_user[photo]', :id => 'markup_user_photo'){result}
348
+ end
349
+ end
350
+
351
+ context 'for #select method' do
352
+ should "display correct select html" do
353
+ actual_html = standard_builder.select(:state, :options => ['California', 'Texas', 'Wyoming'], :class => 'selecty')
354
+ assert_has_tag('select.selecty', :id => 'user_state', :name => 'user[state]') { actual_html }
355
+ assert_has_tag('select.selecty option', :count => 3) { actual_html }
356
+ assert_has_tag('select.selecty option', :value => 'California', :content => 'California') { actual_html }
357
+ assert_has_tag('select.selecty option', :value => 'Texas', :content => 'Texas') { actual_html }
358
+ assert_has_tag('select.selecty option', :value => 'Wyoming', :content => 'Wyoming') { actual_html }
359
+ end
360
+
361
+ should "display correct select html with selected item if it matches value" do
362
+ @user.stubs(:state => 'California')
363
+ actual_html = standard_builder.select(:state, :options => ['California', 'Texas', 'Wyoming'])
364
+ assert_has_tag('select', :id => 'user_state', :name => 'user[state]') { actual_html }
365
+ assert_has_tag('select option', :selected => 'selected', :count => 1) { actual_html }
366
+ assert_has_tag('select option', :value => 'California', :selected => 'selected') { actual_html }
367
+ end
368
+
369
+ should "display correct select html with include_blank" do
370
+ actual_html = standard_builder.select(:state, :options => ['California', 'Texas', 'Wyoming'], :include_blank => true)
371
+ assert_has_tag('select', :id => 'user_state', :name => 'user[state]') { actual_html }
372
+ assert_has_tag('select option', :count => 4) { actual_html }
373
+ assert_has_tag('select option:first-child', :content => '') { actual_html }
374
+ end
375
+
376
+ should "display correct select html with collection passed in" do
377
+ actual_html = standard_builder.select(:role, :collection => @user.role_types, :fields => [:name, :id])
378
+ assert_has_tag('select', :id => 'user_role', :name => 'user[role]') { actual_html }
379
+ assert_has_tag('select option', :count => 3) { actual_html }
380
+ assert_has_tag('select option', :value => '1', :content => 'Admin', :selected => 'selected') { actual_html }
381
+ assert_has_tag('select option', :value => '2', :content => 'Moderate') { actual_html }
382
+ assert_has_tag('select option', :value => '3', :content => 'Limited') { actual_html }
383
+ end
384
+
385
+ should "display correct select in haml" do
386
+ result = render("form_for.haml")
387
+ assert_has_selector('#demo textarea', :name => 'markup_user[about]', :id => 'markup_user_about', :class => 'user-about'){result}
388
+ assert_has_selector('#demo2 textarea', :name => 'markup_user[about]', :id => 'markup_user_about', :class => 'textarea'){result}
389
+ end
390
+
391
+ should "display correct select in erb" do
392
+ result = render("form_for.erb")
393
+ assert_has_selector('#demo textarea', :name => 'markup_user[about]', :id => 'markup_user_about', :class => 'user-about'){result}
394
+ assert_has_selector('#demo2 textarea', :name => 'markup_user[about]', :id => 'markup_user_about', :class => 'textarea'){result}
395
+ end
396
+ end
397
+
398
+ context 'for #submit method' do
399
+ should "display correct submit button html with no options" do
400
+ actual_html = standard_builder.submit
401
+ assert_has_tag('input[type=submit]', :value => "Submit") { actual_html }
402
+ end
403
+
404
+ should "display correct submit button html" do
405
+ actual_html = standard_builder.submit("Commit", :class => 'large')
406
+ assert_has_tag('input.large[type=submit]', :value => "Commit") { actual_html }
407
+ end
408
+
409
+ should "display correct submit button in haml" do
410
+ result = render("form_for.haml")
411
+ assert_has_selector('#demo input', :type => 'submit', :id => 'demo-button', :class => 'success'){result}
412
+ assert_has_selector('#demo2 input', :type => 'submit', :class => 'button', :value => "Create"){result}
413
+ end
414
+
415
+ should "display correct submit button in erb" do
416
+ result = render("form_for.erb")
417
+ assert_has_selector('#demo input', :type => 'submit', :id => 'demo-button', :class => 'success'){result}
418
+ assert_has_selector('#demo2 input', :type => 'submit', :class => 'button', :value => "Create"){result}
419
+ end
420
+ end
421
+
422
+ context 'for #image_submit method' do
423
+ should "display correct image submit button html with no options" do
424
+ actual_html = standard_builder.image_submit('buttons/ok.png')
425
+ assert_has_tag('input[type=image]', :src => "/images/buttons/ok.png") { actual_html }
426
+ end
427
+
428
+ should "display correct image submit button html" do
429
+ actual_html = standard_builder.image_submit('/system/ok.png', :class => 'large')
430
+ assert_has_tag('input.large[type=image]', :src => "/system/ok.png") { actual_html }
431
+ end
432
+
433
+ should "display correct image submit button in haml" do
434
+ result = render("form_for.haml")
435
+ assert_has_selector('#demo input', :type => 'image', :id => 'image-button', :src => '/images/buttons/post.png'){result}
436
+ assert_has_selector('#demo2 input', :type => 'image', :class => 'image', :src => "/images/buttons/ok.png"){result}
437
+ end
438
+
439
+ should "display correct image submit button in erb" do
440
+ result = render("form_for.erb")
441
+ assert_has_selector('#demo input', :type => 'image', :id => 'image-button', :src => '/images/buttons/post.png'){result}
442
+ assert_has_selector('#demo2 input', :type => 'image', :class => 'image', :src => "/images/buttons/ok.png"){result}
443
+ end
444
+ end
445
+
446
+ # ===========================
447
+ # StandardFormBuilder
448
+ # ===========================
449
+
450
+ context 'for #text_field_block method' do
451
+ should "display correct text field block html" do
452
+ actual_html = standard_builder.text_field_block(:first_name, :class => 'large', :caption => "FName")
453
+ assert_has_tag('p label', :for => 'user_first_name', :content => "FName: ") { actual_html }
454
+ assert_has_tag('p input.large[type=text]', :value => "Joe", :id => 'user_first_name', :name => 'user[first_name]') { actual_html }
455
+ end
456
+
457
+ should "display correct text field block in haml" do
458
+ result = render("form_for.haml")
459
+ assert_has_selector('#demo2 p label', :for => 'markup_user_username', :content => "Nickname: ", :class => 'label'){result}
460
+ assert_has_selector('#demo2 p input', :type => 'text', :name => 'markup_user[username]', :id => 'markup_user_username'){result}
461
+ end
462
+
463
+ should "display correct text field block in erb" do
464
+ result = render("form_for.erb")
465
+ assert_has_selector('#demo2 p label', :for => 'markup_user_username', :content => "Nickname: ", :class => 'label'){result}
466
+ assert_has_selector('#demo2 p input', :type => 'text', :name => 'markup_user[username]', :id => 'markup_user_username'){result}
467
+ end
468
+ end
469
+
470
+ context 'for #text_area_block method' do
471
+ should "display correct text area block html" do
472
+ actual_html = standard_builder.text_area_block(:about, :class => 'large', :caption => "About Me")
473
+ assert_has_tag('p label', :for => 'user_about', :content => "About Me: ") { actual_html }
474
+ assert_has_tag('p textarea', :id => 'user_about', :name => 'user[about]') { actual_html }
475
+ end
476
+
477
+ should "display correct text area block in haml" do
478
+ result = render("form_for.haml")
479
+ assert_has_selector('#demo2 p label', :for => 'markup_user_about', :content => "About: "){result}
480
+ assert_has_selector('#demo2 p textarea', :name => 'markup_user[about]', :id => 'markup_user_about'){result}
481
+ end
482
+
483
+ should "display correct text area block in erb" do
484
+ result = render("form_for.erb")
485
+ assert_has_selector('#demo2 p label', :for => 'markup_user_about', :content => "About: "){result}
486
+ assert_has_selector('#demo2 p textarea', :name => 'markup_user[about]', :id => 'markup_user_about'){result}
487
+ end
488
+ end
489
+
490
+ context 'for #password_field_block method' do
491
+ should "display correct password field block html" do
492
+ actual_html = standard_builder.password_field_block(:keycode, :class => 'large', :caption => "Code")
493
+ assert_has_tag('p label', :for => 'user_keycode', :content => "Code: ") { actual_html }
494
+ assert_has_tag('p input.large[type=password]', :id => 'user_keycode', :name => 'user[keycode]') { actual_html }
495
+ end
496
+
497
+ should "display correct password field block in haml" do
498
+ result = render("form_for.haml")
499
+ assert_has_selector('#demo2 p label', :for => 'markup_user_code', :content => "Code: "){result}
500
+ assert_has_selector('#demo2 p input', :type => 'password', :name => 'markup_user[code]', :id => 'markup_user_code'){result}
501
+ end
502
+
503
+ should "display correct password field block in erb" do
504
+ result = render("form_for.erb")
505
+ assert_has_selector('#demo2 p label', :for => 'markup_user_code', :content => "Code: "){result}
506
+ assert_has_selector('#demo2 p input', :type => 'password', :name => 'markup_user[code]', :id => 'markup_user_code'){result}
507
+ end
508
+ end
509
+
510
+ context 'for #file_field_block method' do
511
+ should "display correct file field block html" do
512
+ actual_html = standard_builder.file_field_block(:photo, :class => 'large', :caption => "Photo")
513
+ assert_has_tag('p label', :for => 'user_photo', :content => "Photo: ") { actual_html }
514
+ assert_has_tag('p input.large[type=file]', :id => 'user_photo', :name => 'user[photo]') { actual_html }
515
+ end
516
+
517
+ should "display correct file field block in haml" do
518
+ result = render("form_for.haml")
519
+ assert_has_selector('#demo2 p label', :for => 'markup_user_photo', :content => "Photo: "){result}
520
+ assert_has_selector('#demo2 p input.upload', :type => 'file', :name => 'markup_user[photo]', :id => 'markup_user_photo'){result}
521
+ end
522
+
523
+ should "display correct file field block in erb" do
524
+ result = render("form_for.erb")
525
+ assert_has_selector('#demo2 p label', :for => 'markup_user_photo', :content => "Photo: "){result}
526
+ assert_has_selector('#demo2 p input.upload', :type => 'file', :name => 'markup_user[photo]', :id => 'markup_user_photo'){result}
527
+ end
528
+ end
529
+
530
+ context 'for #check_box_block method' do
531
+ should "display correct check box block html" do
532
+ actual_html = standard_builder.check_box_block(:remember_me, :class => 'large', :caption => "Remember session")
533
+ assert_has_tag('p label', :for => 'user_remember_me', :content => "Remember session: ") { actual_html }
534
+ assert_has_tag('p input.large[type=checkbox]', :id => 'user_remember_me', :name => 'user[remember_me]') { actual_html }
535
+ end
536
+
537
+ should "display correct check box block in haml" do
538
+ result = render("form_for.haml")
539
+ assert_has_selector('#demo2 p label', :for => 'markup_user_remember_me', :content => "Remember Me: "){result}
540
+ assert_has_selector('#demo2 p input.checker', :type => 'checkbox', :name => 'markup_user[remember_me]'){result}
541
+ end
542
+
543
+ should "display correct check box block in erb" do
544
+ result = render("form_for.erb")
545
+ assert_has_selector('#demo2 p label', :for => 'markup_user_remember_me', :content => "Remember Me: "){result}
546
+ assert_has_selector('#demo2 p input.checker', :type => 'checkbox', :name => 'markup_user[remember_me]'){result}
547
+ end
548
+ end
549
+
550
+ context 'for #select_block method' do
551
+ should "display correct select_block block html" do
552
+ actual_html = standard_builder.select_block(:country, :options => ['USA', 'Canada'], :class => 'large', :caption => "Your country")
553
+ assert_has_tag('p label', :for => 'user_country', :content => "Your country: ") { actual_html }
554
+ assert_has_tag('p select', :id => 'user_country', :name => 'user[country]') { actual_html }
555
+ assert_has_tag('p select option', :content => 'USA') { actual_html }
556
+ assert_has_tag('p select option', :content => 'Canada') { actual_html }
557
+ end
558
+
559
+ should "display correct select_block block in haml" do
560
+ result = render("form_for.haml")
561
+ assert_has_selector('#demo2 p label', :for => 'markup_user_state', :content => "State: "){result}
562
+ assert_has_selector('#demo2 p select', :name => 'markup_user[state]', :id => 'markup_user_state'){result}
563
+ assert_has_selector('#demo2 p select option', :content => 'California'){result}
564
+ assert_has_selector('#demo2 p select option', :content => 'Texas'){result}
565
+ end
566
+
567
+ should "display correct select_block block in erb" do
568
+ result = render("form_for.erb")
569
+ assert_has_selector('#demo2 p label', :for => 'markup_user_state', :content => "State: "){result}
570
+ assert_has_selector('#demo2 p select', :name => 'markup_user[state]', :id => 'markup_user_state'){result}
571
+ end
572
+ end
573
+
574
+ context 'for #submit_block method' do
575
+ should "display correct submit block html" do
576
+ actual_html = standard_builder.submit_block("Update", :class => 'large')
577
+ assert_has_tag('p input.large[type=submit]', :value => 'Update') { actual_html }
578
+ end
579
+
580
+ should "display correct submit block in haml" do
581
+ result = render("form_for.haml")
582
+ assert_has_selector('#demo2 p input', :type => 'submit', :class => 'button'){result}
583
+ end
584
+
585
+ should "display correct submit block in erb" do
586
+ result = render("form_for.erb")
587
+ assert_has_selector('#demo2 p input', :type => 'submit', :class => 'button'){result}
588
+ end
589
+ end
590
+
591
+ context 'for #image_submit_block method' do
592
+ should "display correct image submit block html" do
593
+ actual_html = standard_builder.image_submit_block("buttons/ok.png", :class => 'large')
594
+ assert_has_tag('p input.large[type=image]', :src => '/images/buttons/ok.png') { actual_html }
595
+ end
596
+
597
+ should "display correct image submit block in haml" do
598
+ result = render("form_for.haml")
599
+ assert_has_selector('#demo2 p input', :type => 'image', :class => 'image', :src => '/images/buttons/ok.png'){result}
600
+ end
601
+
602
+ should "display correct image submit block in erb" do
603
+ result = render("form_for.erb")
604
+ assert_has_selector('#demo2 p input', :type => 'image', :class => 'image', :src => '/images/buttons/ok.png'){result}
605
+ end
606
+ end
607
+ end