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.
- data/.document +5 -0
- data/.gitignore +21 -0
- data/LICENSE +47 -0
- data/README.rdoc +369 -0
- data/Rakefile +57 -0
- data/lib/any_view/asset_tag_helpers.rb +103 -0
- data/lib/any_view/core_ext/array.rb +7 -0
- data/lib/any_view/core_ext/hash.rb +41 -0
- data/lib/any_view/core_ext/string.rb +17 -0
- data/lib/any_view/form_builder/abstract_form_builder.rb +128 -0
- data/lib/any_view/form_builder/standard_form_builder.rb +37 -0
- data/lib/any_view/form_helpers.rb +217 -0
- data/lib/any_view/format_helpers.rb +49 -0
- data/lib/any_view/tag_helpers.rb +47 -0
- data/lib/any_view/tilt_base.rb +94 -0
- data/lib/any_view.rb +30 -0
- data/test/fixtures/basic_form_for.erb +3 -0
- data/test/fixtures/builder_type_form_for.erb +3 -0
- data/test/fixtures/capture_concat.erb +14 -0
- data/test/fixtures/capture_concat.haml +13 -0
- data/test/fixtures/content_for.erb +11 -0
- data/test/fixtures/content_for.haml +9 -0
- data/test/fixtures/content_tag.erb +11 -0
- data/test/fixtures/content_tag.haml +9 -0
- data/test/fixtures/delete_form_for.erb +3 -0
- data/test/fixtures/field_set_tag.erb +3 -0
- data/test/fixtures/fields_for.erb +8 -0
- data/test/fixtures/fields_for.haml +6 -0
- data/test/fixtures/fields_for_basic.erb +3 -0
- data/test/fixtures/fields_for_nil.erb +3 -0
- data/test/fixtures/form_for.erb +56 -0
- data/test/fixtures/form_for.haml +47 -0
- data/test/fixtures/form_for_nil.erb +3 -0
- data/test/fixtures/form_tag.erb +57 -0
- data/test/fixtures/form_tag.haml +45 -0
- data/test/fixtures/form_tag_methods.erb +19 -0
- data/test/fixtures/form_tag_methods.haml +15 -0
- data/test/fixtures/link_to.erb +5 -0
- data/test/fixtures/link_to.haml +4 -0
- data/test/fixtures/mail_to.erb +3 -0
- data/test/fixtures/mail_to.haml +3 -0
- data/test/fixtures/multipart.erb +12 -0
- data/test/fixtures/multipart_form_for.erb +3 -0
- data/test/fixtures/put_form_for.erb +3 -0
- data/test/fixtures/standard_form_builder.erb +3 -0
- data/test/helper.rb +121 -0
- data/test/test_asset_tag_helpers.rb +176 -0
- data/test/test_form_builder.rb +607 -0
- data/test/test_form_helpers.rb +453 -0
- data/test/test_format_helpers.rb +59 -0
- data/test/test_tag_helpers.rb +65 -0
- 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
|