ramaze 2010.06.18 → 2011.01
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/MANIFEST +9 -16
- data/README.md +37 -30
- data/Rakefile +5 -1
- data/TODO.md +19 -0
- data/doc/AUTHORS +5 -1
- data/doc/CHANGELOG +3553 -3272
- data/doc/tutorial/todolist.html +1512 -1512
- data/examples/app/blog/app.rb +2 -0
- data/examples/app/todolist/controller/init.rb +1 -2
- data/examples/app/wiktacular/mkd/main/2007-07-20_19-21-12.mkd +1 -1
- data/examples/app/wiktacular/mkd/main/2007-07-20_19-23-10.mkd +1 -1
- data/examples/app/wiktacular/mkd/main/2007-07-20_19-45-07.mkd +1 -1
- data/examples/app/wiktacular/mkd/main/current.mkd +1 -1
- data/examples/app/wiktacular/mkd/testing/2007-07-20_16-43-46.mkd +1 -1
- data/examples/app/wiktacular/mkd/testing/2007-07-20_19-43-50.mkd +2 -2
- data/examples/app/wiktacular/mkd/testing/2007-07-21_18-47-08.mkd +16 -16
- data/examples/app/wiktacular/mkd/testing/2007-07-21_18-47-54.mkd +16 -16
- data/examples/app/wiktacular/mkd/testing/current.mkd +16 -16
- data/lib/proto/model/init.rb +1 -1
- data/lib/proto/public/js/jquery.js +2034 -1095
- data/lib/proto/start.rb +2 -0
- data/lib/proto/view/index.xhtml +3 -3
- data/lib/ramaze.rb +1 -2
- data/lib/ramaze/cache.rb +1 -0
- data/lib/ramaze/cache/sequel.rb +131 -37
- data/lib/ramaze/controller.rb +1 -0
- data/lib/ramaze/gestalt.rb +75 -46
- data/lib/ramaze/helper.rb +1 -0
- data/lib/ramaze/helper/auth.rb +38 -4
- data/lib/ramaze/helper/blue_form.rb +498 -78
- data/lib/ramaze/helper/cache.rb +2 -2
- data/lib/ramaze/helper/csrf.rb +225 -0
- data/lib/ramaze/helper/erector.rb +67 -9
- data/lib/ramaze/helper/flash.rb +4 -2
- data/lib/ramaze/helper/gestalt.rb +2 -0
- data/lib/ramaze/helper/gravatar.rb +1 -1
- data/lib/ramaze/helper/localize.rb +4 -0
- data/lib/ramaze/helper/send_file.rb +30 -0
- data/lib/ramaze/helper/thread.rb +5 -0
- data/lib/ramaze/helper/user.rb +4 -3
- data/lib/ramaze/helper/xhtml.rb +87 -8
- data/lib/ramaze/log.rb +13 -0
- data/lib/ramaze/log/analogger.rb +15 -5
- data/lib/ramaze/log/growl.rb +28 -13
- data/lib/ramaze/log/hub.rb +12 -4
- data/lib/ramaze/log/informer.rb +28 -11
- data/lib/ramaze/log/knotify.rb +7 -2
- data/lib/ramaze/log/logger.rb +12 -4
- data/lib/ramaze/log/logging.rb +40 -14
- data/lib/ramaze/log/rotatinginformer.rb +47 -23
- data/lib/ramaze/log/syslog.rb +37 -31
- data/lib/ramaze/log/xosd.rb +7 -4
- data/lib/ramaze/middleware_compiler.rb +2 -2
- data/lib/ramaze/snippets/fiber.rb +63 -63
- data/lib/ramaze/snippets/ramaze/lru_hash.rb +1 -1
- data/lib/ramaze/tool/bin.rb +1 -1
- data/lib/ramaze/version.rb +1 -1
- data/lib/ramaze/view.rb +4 -4
- data/lib/ramaze/view/erector.rb +88 -13
- data/ramaze.gemspec +65 -65
- data/spec/ramaze/bin/ramaze.rb +1 -1
- data/spec/ramaze/cache/localmemcache.rb +20 -12
- data/spec/ramaze/cache/sequel.rb +19 -19
- data/spec/ramaze/helper/blue_form.rb +549 -257
- data/spec/ramaze/helper/csrf.rb +109 -0
- data/spec/ramaze/helper/httpdigest.rb +31 -29
- data/spec/ramaze/helper/user.rb +1 -1
- data/spec/ramaze/helper/xhtml.rb +17 -0
- data/spec/ramaze/log/growl.rb +34 -0
- data/spec/ramaze/log/informer.rb +1 -0
- data/spec/ramaze/view/erector.rb +49 -71
- data/spec/ramaze/view/erector/external_view.erector +5 -0
- data/spec/ramaze/view/erector/index.erector +5 -0
- data/spec/ramaze/view/erector/layout.erector +13 -3
- data/spec/ramaze/view/erector/tables.erector +23 -0
- data/spec/ramaze/view/erector/view.erector +6 -0
- data/tasks/git.rake +2 -2
- metadata +133 -176
- data/examples/helpers/form_with_sequel.rb +0 -24
- data/examples/helpers/nitro_form.rb +0 -23
- data/lib/ramaze/helper/form.rb +0 -133
- data/lib/ramaze/helper/nitroform.rb +0 -14
- data/lib/ramaze/helper/pager.rb +0 -367
- data/lib/ramaze/helper/partial.rb +0 -100
- data/lib/ramaze/helper/sequel.rb +0 -55
- data/lib/ramaze/helper/sequel_form.rb +0 -284
- data/lib/vendor/etag.rb +0 -22
- data/spec/ramaze/helper/form.rb +0 -360
- data/spec/ramaze/helper/pager.rb +0 -96
- data/spec/ramaze/helper/sequel_form.rb +0 -94
- data/spec/ramaze/view/erector/external.erector +0 -1
- data/spec/ramaze/view/erector/invoke_helper_method.erector +0 -1
- data/spec/ramaze/view/erector/strict_xhtml.erector +0 -3
- data/spec/ramaze/view/erector/sum.erector +0 -1
@@ -5,69 +5,81 @@ Bacon.summary_at_exit
|
|
5
5
|
|
6
6
|
describe BF = Ramaze::Helper::BlueForm do
|
7
7
|
extend BF
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
8
|
+
|
9
|
+
# Generate some dummy data
|
10
|
+
@data = Class.new do
|
11
|
+
attr_reader :username
|
12
|
+
attr_reader :password
|
13
|
+
attr_reader :assigned
|
14
|
+
attr_reader :assigned_hash
|
15
|
+
attr_reader :message
|
16
|
+
attr_reader :servers_hash
|
17
|
+
attr_reader :servers_array
|
18
|
+
attr_accessor :errors
|
19
|
+
|
20
|
+
def initialize
|
21
|
+
@username = 'mrfoo'
|
22
|
+
@password = 'super-secret-password'
|
23
|
+
@assigned = ['bacon', 'steak']
|
24
|
+
@assigned_hash= {'Bacon' => 'bacon', 'Steak' => 'steak'}
|
25
|
+
@message = 'Hello, textarea!'
|
26
|
+
@servers_hash = {
|
27
|
+
:webrick => 'WEBrick',
|
28
|
+
:mongrel => 'Mongrel',
|
29
|
+
:thin => 'Thin',
|
30
|
+
}
|
31
|
+
@servers_array = ['WEBrick', 'Mongrel', 'Thin']
|
32
|
+
end
|
33
|
+
end.new
|
17
34
|
|
18
35
|
# very strange comparision, sort all characters and compare, so we don't have
|
19
36
|
# order issues.
|
20
37
|
def assert(expected, output)
|
21
|
-
left
|
38
|
+
left = expected.to_s.gsub(/\s+/, ' ').gsub(/>\s+</, '><').strip
|
22
39
|
right = output.to_s.gsub(/\s+/, ' ').gsub(/>\s+</, '><').strip
|
23
40
|
left.scan(/./).sort.should == right.scan(/./).sort
|
24
|
-
|
25
|
-
|
26
|
-
#
|
27
|
-
#
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
# puts tidy(right)
|
32
|
-
# puts
|
33
|
-
# end
|
34
|
-
# left.should == right
|
35
|
-
end
|
36
|
-
|
37
|
-
it 'makes form with method' do
|
38
|
-
out = form(:method => :post)
|
41
|
+
end
|
42
|
+
|
43
|
+
# ------------------------------------------------
|
44
|
+
# Basic forms
|
45
|
+
|
46
|
+
it 'Make a basic form' do
|
47
|
+
out = form_for(@data, :method => :post)
|
39
48
|
assert(<<-FORM, out)
|
40
49
|
<form method="post"></form>
|
41
50
|
FORM
|
42
51
|
end
|
43
52
|
|
44
|
-
it '
|
45
|
-
out =
|
53
|
+
it 'Make a form with the method and action attributes specified' do
|
54
|
+
out = form_for(@data, :method => :post, :action => '/')
|
46
55
|
assert(<<-FORM, out)
|
47
56
|
<form method="post" action="/"></form>
|
48
57
|
FORM
|
49
58
|
end
|
50
59
|
|
51
|
-
it '
|
52
|
-
out =
|
60
|
+
it 'Make a form with a method, action and a name attribute' do
|
61
|
+
out = form_for(@data, :method => :post, :action => '/', :name => :spec)
|
53
62
|
assert(<<-FORM, out)
|
54
63
|
<form method="post" action="/" name="spec">
|
55
64
|
</form>
|
56
65
|
FORM
|
57
66
|
end
|
58
67
|
|
59
|
-
it '
|
60
|
-
out =
|
68
|
+
it 'Make a form with a class and an ID' do
|
69
|
+
out = form_for(@data, :class => :foo, :id => :bar)
|
61
70
|
assert(<<-FORM, out)
|
62
71
|
<form class="foo" id="bar">
|
63
72
|
</form>
|
64
73
|
FORM
|
65
74
|
end
|
66
75
|
|
67
|
-
it '
|
68
|
-
out =
|
69
|
-
f.
|
70
|
-
|
76
|
+
it 'Make a form with a fieldset and a legend' do
|
77
|
+
out = form_for(@data, :method => :get) do |f|
|
78
|
+
f.g.fieldset do
|
79
|
+
f.legend('The Form')
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
71
83
|
assert(<<-FORM, out)
|
72
84
|
<form method="get">
|
73
85
|
<fieldset>
|
@@ -76,358 +88,638 @@ describe BF = Ramaze::Helper::BlueForm do
|
|
76
88
|
</form>
|
77
89
|
FORM
|
78
90
|
end
|
91
|
+
|
92
|
+
# ------------------------------------------------
|
93
|
+
# Text fields
|
79
94
|
|
80
|
-
it '
|
81
|
-
out =
|
82
|
-
f.input_text 'Username', :username
|
83
|
-
|
95
|
+
it 'Make a form with input_text(label, value)' do
|
96
|
+
out = form_for(@data, :method => :get) do |f|
|
97
|
+
f.input_text 'Username', :username
|
98
|
+
end
|
99
|
+
|
84
100
|
assert(<<-FORM, out)
|
85
101
|
<form method="get">
|
86
|
-
<
|
87
|
-
<
|
88
|
-
|
89
|
-
|
90
|
-
</p>
|
91
|
-
</fieldset>
|
102
|
+
<p>
|
103
|
+
<label for="form_username">Username</label>
|
104
|
+
<input type="text" name="username" id="form_username" value="mrfoo" />
|
105
|
+
</p>
|
92
106
|
</form>
|
93
107
|
FORM
|
94
108
|
end
|
95
|
-
|
96
|
-
it '
|
97
|
-
out =
|
98
|
-
f.input_text 'Username', :username
|
99
|
-
|
109
|
+
|
110
|
+
it 'Make a form with input_text(username, label, value)' do
|
111
|
+
out = form_for(@data, :method => :get) do |f|
|
112
|
+
f.input_text 'Username', :username, :value => 'mrboo'
|
113
|
+
end
|
114
|
+
|
100
115
|
assert(<<-FORM, out)
|
101
116
|
<form method="get">
|
102
|
-
<
|
103
|
-
<
|
104
|
-
|
105
|
-
|
106
|
-
</p>
|
107
|
-
</fieldset>
|
117
|
+
<p>
|
118
|
+
<label for="form_username">Username</label>
|
119
|
+
<input type="text" name="username" id="form_username" value="mrboo" />
|
120
|
+
</p>
|
108
121
|
</form>
|
109
122
|
FORM
|
110
123
|
end
|
111
|
-
|
112
|
-
it '
|
113
|
-
out =
|
114
|
-
f.input_text 'Username', :username,
|
115
|
-
|
124
|
+
|
125
|
+
it 'Make a form with input_text(label, name, size, id)' do
|
126
|
+
out = form_for(@data, :method => :get) do |f|
|
127
|
+
f.input_text 'Username', :username, :size => 10, :id => 'my_id'
|
128
|
+
end
|
129
|
+
|
116
130
|
assert(<<-FORM, out)
|
117
131
|
<form method="get">
|
118
|
-
<
|
119
|
-
<
|
120
|
-
|
121
|
-
|
122
|
-
</p>
|
123
|
-
</fieldset>
|
132
|
+
<p>
|
133
|
+
<label for="my_id">Username</label>
|
134
|
+
<input size="10" type="text" name="username" id="my_id" value="mrfoo" />
|
135
|
+
</p>
|
124
136
|
</form>
|
125
137
|
FORM
|
126
138
|
end
|
127
|
-
|
128
|
-
|
129
|
-
|
139
|
+
|
140
|
+
# ------------------------------------------------
|
141
|
+
# Password fields
|
142
|
+
|
143
|
+
it 'Make a form with input_password(label, name)' do
|
144
|
+
out = form_for(nil , :method => :get) do |f|
|
130
145
|
f.input_password 'Password', :password
|
131
|
-
|
146
|
+
end
|
147
|
+
|
132
148
|
assert(<<-FORM, out)
|
133
149
|
<form method="get">
|
134
|
-
<
|
135
|
-
<
|
136
|
-
|
137
|
-
|
138
|
-
</p>
|
139
|
-
</fieldset>
|
150
|
+
<p>
|
151
|
+
<label for="form_password">Password</label>
|
152
|
+
<input type="password" name="password" id="form_password" />
|
153
|
+
</p>
|
140
154
|
</form>
|
141
155
|
FORM
|
142
156
|
end
|
157
|
+
|
158
|
+
it 'Make a form with input_password(label, name, value, class)' do
|
159
|
+
out = form_for(@data, :method => :get) do |f|
|
160
|
+
f.input_password 'Password', :password, :value => 'super-secret-password', :class => 'password_class'
|
161
|
+
end
|
143
162
|
|
144
|
-
|
145
|
-
|
163
|
+
assert(<<-FORM, out)
|
164
|
+
<form method="get">
|
165
|
+
<p>
|
166
|
+
<label for="form_password">Password</label>
|
167
|
+
<input class="password_class" type="password" name="password" id="form_password" value="super-secret-password" />
|
168
|
+
</p>
|
169
|
+
</form>
|
170
|
+
FORM
|
171
|
+
end
|
172
|
+
|
173
|
+
# ------------------------------------------------
|
174
|
+
# Submit buttons
|
175
|
+
|
176
|
+
it 'Make a form with input_submit()' do
|
177
|
+
out = form_for(@data, :method => :get) do |f|
|
146
178
|
f.input_submit
|
147
|
-
|
179
|
+
end
|
180
|
+
|
148
181
|
assert(<<-FORM, out)
|
149
182
|
<form method="get">
|
150
|
-
<fieldset>
|
151
183
|
<p>
|
152
|
-
<input type="submit"
|
184
|
+
<input type="submit" />
|
153
185
|
</p>
|
154
|
-
</fieldset>
|
155
186
|
</form>
|
156
187
|
FORM
|
157
188
|
end
|
158
189
|
|
159
|
-
it '
|
160
|
-
out =
|
190
|
+
it 'Make a form with input_submit(value)' do
|
191
|
+
out = form_for(@data, :method => :get) do |f|
|
161
192
|
f.input_submit 'Send'
|
162
|
-
|
193
|
+
end
|
194
|
+
|
163
195
|
assert(<<-FORM, out)
|
164
196
|
<form method="get">
|
165
|
-
<
|
166
|
-
<
|
167
|
-
|
168
|
-
</p>
|
169
|
-
</fieldset>
|
197
|
+
<p>
|
198
|
+
<input type="submit" value="Send" />
|
199
|
+
</p>
|
170
200
|
</form>
|
171
201
|
FORM
|
172
202
|
end
|
173
|
-
|
174
|
-
|
175
|
-
|
203
|
+
|
204
|
+
# ------------------------------------------------
|
205
|
+
# Checkboxes
|
206
|
+
|
207
|
+
it 'Make a form with input_checkbox(label, name)' do
|
208
|
+
out = form_for(@data, :method => :get) do |f|
|
176
209
|
f.input_checkbox 'Assigned', :assigned
|
177
|
-
|
210
|
+
end
|
211
|
+
|
178
212
|
assert(<<-FORM, out)
|
179
213
|
<form method="get">
|
180
|
-
<
|
181
|
-
<
|
182
|
-
|
183
|
-
|
184
|
-
</
|
185
|
-
</
|
214
|
+
<p>
|
215
|
+
<label for="form_assigned_0">Assigned</label>
|
216
|
+
<input type="hidden" name="assigned" value="0" />
|
217
|
+
<span class="checkbox_wrap"><input type="checkbox" name="assigned[]" id="form_assigned_0" value="bacon" /> bacon</span>
|
218
|
+
<span class="checkbox_wrap"><input type="checkbox" name="assigned[]" id="form_assigned_1" value="steak" /> steak</span>
|
219
|
+
</p>
|
186
220
|
</form>
|
187
221
|
FORM
|
188
222
|
end
|
189
223
|
|
190
|
-
it '
|
191
|
-
out =
|
192
|
-
f.input_checkbox 'Assigned', :assigned,
|
193
|
-
|
224
|
+
it 'Make a form with input_checkbox(label, name, checked)' do
|
225
|
+
out = form_for(@data, :method => :get) do |f|
|
226
|
+
f.input_checkbox 'Assigned', :assigned, 'bacon'
|
227
|
+
end
|
228
|
+
|
194
229
|
assert(<<-FORM, out)
|
195
230
|
<form method="get">
|
196
|
-
<
|
197
|
-
<
|
198
|
-
|
199
|
-
|
200
|
-
</
|
201
|
-
</
|
231
|
+
<p>
|
232
|
+
<label for="form_assigned_0">Assigned</label>
|
233
|
+
<input type="hidden" name="assigned" value="0" />
|
234
|
+
<span class="checkbox_wrap"><input type="checkbox" name="assigned[]" id="form_assigned_0" checked="checked" value="bacon" /> bacon</span>
|
235
|
+
<span class="checkbox_wrap"><input type="checkbox" name="assigned[]" id="form_assigned_1" value="steak" /> steak</span>
|
236
|
+
</p>
|
202
237
|
</form>
|
203
238
|
FORM
|
204
239
|
end
|
205
240
|
|
206
|
-
it '
|
207
|
-
out =
|
208
|
-
f.input_checkbox 'Assigned', :assigned,
|
209
|
-
|
241
|
+
it 'Make a form with input_checkbox(label, name, checked, values, default)' do
|
242
|
+
out = form_for(@data, :method => :get) do |f|
|
243
|
+
f.input_checkbox 'Assigned', :assigned, 'boo', :values => ['boo'], :default => 'ramaze'
|
244
|
+
end
|
245
|
+
|
210
246
|
assert(<<-FORM, out)
|
211
247
|
<form method="get">
|
212
|
-
<
|
213
|
-
<
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
</fieldset>
|
248
|
+
<p>
|
249
|
+
<label for="form_assigned_0">Assigned</label>
|
250
|
+
<input type="hidden" name="assigned" value="ramaze" />
|
251
|
+
<span class="checkbox_wrap"><input type="checkbox" name="assigned[]" id="form_assigned_0" checked="checked" value="boo" /> boo</span>
|
252
|
+
</p>
|
218
253
|
</form>
|
219
254
|
FORM
|
220
255
|
end
|
256
|
+
|
257
|
+
# ------------------------------------------------
|
258
|
+
# Checkboxes using a hash
|
259
|
+
|
260
|
+
it 'Make a form with input_checkbox(label, name) using a hash' do
|
261
|
+
out = form_for(@data, :method => :get) do |f|
|
262
|
+
f.input_checkbox 'Assigned', :assigned_hash
|
263
|
+
end
|
221
264
|
|
222
|
-
it 'makes form with input_checkbox(label, name, checked = nil)' do
|
223
|
-
out = form(:method => :get){|f|
|
224
|
-
f.input_checkbox 'Assigned', :assigned, nil
|
225
|
-
}
|
226
265
|
assert(<<-FORM, out)
|
227
266
|
<form method="get">
|
228
|
-
<
|
229
|
-
<
|
230
|
-
|
231
|
-
|
232
|
-
</
|
233
|
-
</
|
267
|
+
<p>
|
268
|
+
<label for="form_assigned_hash_0">Assigned</label>
|
269
|
+
<input type="hidden" name="assigned_hash" value="0" />
|
270
|
+
<span class="checkbox_wrap"><input type="checkbox" name="assigned_hash[]" id="form_assigned_hash_0" value="bacon" /> Bacon</span>
|
271
|
+
<span class="checkbox_wrap"><input type="checkbox" name="assigned_hash[]" id="form_assigned_hash_1" value="steak" /> Steak</span>
|
272
|
+
</p>
|
234
273
|
</form>
|
235
274
|
FORM
|
236
275
|
end
|
237
276
|
|
238
|
-
it '
|
239
|
-
out =
|
240
|
-
f.
|
241
|
-
|
277
|
+
it 'Make a form with input_checkbox(label, name, checked) using a hash' do
|
278
|
+
out = form_for(@data, :method => :get) do |f|
|
279
|
+
f.input_checkbox 'Assigned', :assigned_hash, 'bacon'
|
280
|
+
end
|
281
|
+
|
242
282
|
assert(<<-FORM, out)
|
243
283
|
<form method="get">
|
244
|
-
<
|
245
|
-
<
|
246
|
-
|
247
|
-
|
248
|
-
</
|
249
|
-
</
|
284
|
+
<p>
|
285
|
+
<label for="form_assigned_hash_0">Assigned</label>
|
286
|
+
<input type="hidden" name="assigned_hash" value="0" />
|
287
|
+
<span class="checkbox_wrap"><input type="checkbox" name="assigned_hash[]" id="form_assigned_hash_0" checked="checked" value="bacon" /> Bacon</span>
|
288
|
+
<span class="checkbox_wrap"><input type="checkbox" name="assigned_hash[]" id="form_assigned_hash_1" value="steak" /> Steak</span>
|
289
|
+
</p>
|
250
290
|
</form>
|
251
291
|
FORM
|
252
292
|
end
|
253
293
|
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
294
|
+
# ------------------------------------------------
|
295
|
+
# Radio buttons
|
296
|
+
|
297
|
+
it 'Make a form with input_radio(label, name)' do
|
298
|
+
out = form_for(@data, :method => :get) do |f|
|
299
|
+
f.input_radio 'Assigned', :assigned
|
300
|
+
end
|
301
|
+
|
258
302
|
assert(<<-FORM, out)
|
259
303
|
<form method="get">
|
260
|
-
<
|
261
|
-
<
|
262
|
-
|
263
|
-
|
264
|
-
</
|
265
|
-
</
|
304
|
+
<p>
|
305
|
+
<label for="form_assigned_0">Assigned</label>
|
306
|
+
<input type="hidden" name="assigned" value="0" />
|
307
|
+
<span class="radio_wrap"><input type="radio" name="assigned" id="form_assigned_0" value="bacon" /> bacon</span>
|
308
|
+
<span class="radio_wrap"><input type="radio" name="assigned" id="form_assigned_1" value="steak" /> steak</span>
|
309
|
+
</p>
|
266
310
|
</form>
|
267
311
|
FORM
|
268
312
|
end
|
269
313
|
|
270
|
-
it '
|
271
|
-
out =
|
272
|
-
f.
|
273
|
-
|
314
|
+
it 'Make a form with input_radio(label, name, checked)' do
|
315
|
+
out = form_for(@data, :method => :get) do |f|
|
316
|
+
f.input_radio 'Assigned', :assigned, 'bacon'
|
317
|
+
end
|
318
|
+
|
274
319
|
assert(<<-FORM, out)
|
275
320
|
<form method="get">
|
276
|
-
<
|
277
|
-
<
|
278
|
-
|
279
|
-
|
280
|
-
</
|
281
|
-
</
|
321
|
+
<p>
|
322
|
+
<label for="form_assigned_0">Assigned</label>
|
323
|
+
<input type="hidden" name="assigned" value="0" />
|
324
|
+
<span class="radio_wrap"><input type="radio" name="assigned" id="form_assigned_0" checked="checked" value="bacon" /> bacon</span>
|
325
|
+
<span class="radio_wrap"><input type="radio" name="assigned" id="form_assigned_1" value="steak" /> steak</span>
|
326
|
+
</p>
|
282
327
|
</form>
|
283
328
|
FORM
|
284
329
|
end
|
330
|
+
|
331
|
+
it 'Make a form with input_radio(label, name, checked, values, default)' do
|
332
|
+
out = form_for(@data, :method => :get) do |f|
|
333
|
+
f.input_radio 'Assigned', :assigned, 'boo', :values => ['boo'], :default => 'ramaze'
|
334
|
+
end
|
285
335
|
|
286
|
-
it 'makes form with input_hidden(name)' do
|
287
|
-
out = form(:method => :get){|f|
|
288
|
-
f.input_hidden :post_id
|
289
|
-
}
|
290
336
|
assert(<<-FORM, out)
|
291
337
|
<form method="get">
|
292
|
-
<
|
293
|
-
<
|
294
|
-
|
338
|
+
<p>
|
339
|
+
<label for="form_assigned_0">Assigned</label>
|
340
|
+
<input type="hidden" name="assigned" value="ramaze" />
|
341
|
+
<span class="radio_wrap"><input type="radio" name="assigned" id="form_assigned_0" checked="checked" value="boo" /> boo</span>
|
342
|
+
</p>
|
295
343
|
</form>
|
296
344
|
FORM
|
297
345
|
end
|
346
|
+
|
347
|
+
# ------------------------------------------------
|
348
|
+
# Radio buttons using a hash
|
349
|
+
|
350
|
+
it 'Make a form with input_radio(label, name) using a hash' do
|
351
|
+
out = form_for(@data, :method => :get) do |f|
|
352
|
+
f.input_radio 'Assigned', :assigned_hash
|
353
|
+
end
|
298
354
|
|
299
|
-
it 'makes form with input_hidden(name, value)' do
|
300
|
-
out = form(:method => :get){|f|
|
301
|
-
f.input_hidden :post_id, 15
|
302
|
-
}
|
303
355
|
assert(<<-FORM, out)
|
304
356
|
<form method="get">
|
305
|
-
<
|
306
|
-
<
|
307
|
-
|
357
|
+
<p>
|
358
|
+
<label for="form_assigned_hash_0">Assigned</label>
|
359
|
+
<input type="hidden" name="assigned_hash" value="0" />
|
360
|
+
<span class="radio_wrap"><input type="radio" name="assigned_hash" id="form_assigned_hash_0" value="bacon" /> Bacon</span>
|
361
|
+
<span class="radio_wrap"><input type="radio" name="assigned_hash" id="form_assigned_hash_1" value="steak" /> Steak</span>
|
362
|
+
</p>
|
308
363
|
</form>
|
309
364
|
FORM
|
310
365
|
end
|
311
366
|
|
312
|
-
|
313
|
-
:
|
314
|
-
|
315
|
-
|
316
|
-
}
|
367
|
+
it 'Make a form with input_radio(label, name, checked) using a hash' do
|
368
|
+
out = form_for(@data, :method => :get) do |f|
|
369
|
+
f.input_radio 'Assigned', :assigned_hash, 'bacon'
|
370
|
+
end
|
317
371
|
|
318
|
-
it 'makes form with select(label, name, values) from hash' do
|
319
|
-
out = form(:method => :get){|f|
|
320
|
-
f.select 'Server', :server, servers_hash
|
321
|
-
}
|
322
372
|
assert(<<-FORM, out)
|
323
373
|
<form method="get">
|
324
|
-
<
|
325
|
-
<
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
<option value="thin">Thin</option>
|
331
|
-
</select>
|
332
|
-
</p>
|
333
|
-
</fieldset>
|
374
|
+
<p>
|
375
|
+
<label for="form_assigned_hash_0">Assigned</label>
|
376
|
+
<input type="hidden" name="assigned_hash" value="0" />
|
377
|
+
<span class="radio_wrap"><input type="radio" name="assigned_hash" id="form_assigned_hash_0" checked="checked" value="bacon" /> Bacon</span>
|
378
|
+
<span class="radio_wrap"><input type="radio" name="assigned_hash" id="form_assigned_hash_1" value="steak" /> Steak</span>
|
379
|
+
</p>
|
334
380
|
</form>
|
335
381
|
FORM
|
336
382
|
end
|
337
383
|
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
384
|
+
# ------------------------------------------------
|
385
|
+
# File uploading
|
386
|
+
|
387
|
+
it 'Make a form with input_file(label, name)' do
|
388
|
+
out = form_for(@data, :method => :get) do |f|
|
389
|
+
f.input_file 'File', :file
|
390
|
+
end
|
391
|
+
|
342
392
|
assert(<<-FORM, out)
|
343
393
|
<form method="get">
|
344
|
-
<
|
345
|
-
<
|
346
|
-
|
347
|
-
|
348
|
-
<option value="webrick">WEBrick</option>
|
349
|
-
<option value="mongrel" selected="selected">Mongrel</option>
|
350
|
-
<option value="thin">Thin</option>
|
351
|
-
</select>
|
352
|
-
</p>
|
353
|
-
</fieldset>
|
394
|
+
<p>
|
395
|
+
<label for="form_file">File</label>
|
396
|
+
<input type="file" name="file" id="form_file" />
|
397
|
+
</p>
|
354
398
|
</form>
|
355
399
|
FORM
|
356
400
|
end
|
357
401
|
|
358
|
-
|
402
|
+
it 'Make a form with input_file(label, name)' do
|
403
|
+
out = form_for(@data, :method => :get) do |f|
|
404
|
+
f.input_file 'File', :file, :id => 'awesome_file'
|
405
|
+
end
|
406
|
+
|
407
|
+
assert(<<-FORM, out)
|
408
|
+
<form method="get">
|
409
|
+
<p>
|
410
|
+
<label for="awesome_file">File</label>
|
411
|
+
<input type="file" name="file" id="awesome_file" />
|
412
|
+
</p>
|
413
|
+
</form>
|
414
|
+
FORM
|
415
|
+
end
|
416
|
+
|
417
|
+
# ------------------------------------------------
|
418
|
+
# Hidden fields
|
419
|
+
|
420
|
+
it 'Make a form with input_hidden(name, value)' do
|
421
|
+
out = form_for(@data, :method => :get) do |f|
|
422
|
+
f.input_hidden :username, 'Bob Ross'
|
423
|
+
end
|
359
424
|
|
360
|
-
it 'makes form with select(label, name, values) from array' do
|
361
|
-
out = form(:method => :get){|f|
|
362
|
-
f.select 'Server', :server, servers_array
|
363
|
-
}
|
364
425
|
assert(<<-FORM, out)
|
365
426
|
<form method="get">
|
366
|
-
<
|
367
|
-
<p>
|
368
|
-
<label for="form-server">Server</label>
|
369
|
-
<select id="form-server" size="1" name="server">
|
370
|
-
<option value="WEBrick">WEBrick</option>
|
371
|
-
<option value="Mongrel">Mongrel</option>
|
372
|
-
<option value="Thin">Thin</option>
|
373
|
-
</select>
|
374
|
-
</p>
|
375
|
-
</fieldset>
|
427
|
+
<input type="hidden" name="username" value="Bob Ross" />
|
376
428
|
</form>
|
377
429
|
FORM
|
378
430
|
end
|
431
|
+
|
432
|
+
it 'Make a form with input_hidden(name, value, id)' do
|
433
|
+
out = form_for(@data, :method => :get) do |f|
|
434
|
+
f.input_hidden :username, 'Bob Ross', :id => 'test'
|
435
|
+
end
|
379
436
|
|
380
|
-
it 'makes form with select(label, name, values) with selection from array' do
|
381
|
-
out = form(:method => :get){|f|
|
382
|
-
f.select 'Server', :server, servers_array, :selected => 'Mongrel'
|
383
|
-
}
|
384
437
|
assert(<<-FORM, out)
|
385
438
|
<form method="get">
|
386
|
-
<
|
387
|
-
<p>
|
388
|
-
<label for="form-server">Server</label>
|
389
|
-
<select id="form-server" size="1" name="server">
|
390
|
-
<option value="WEBrick">WEBrick</option>
|
391
|
-
<option value="Mongrel" selected="selected">Mongrel</option>
|
392
|
-
<option value="Thin">Thin</option>
|
393
|
-
</select>
|
394
|
-
</p>
|
395
|
-
</fieldset>
|
439
|
+
<input type="hidden" name="username" value="Bob Ross" id="test" />
|
396
440
|
</form>
|
397
441
|
FORM
|
398
442
|
end
|
443
|
+
|
444
|
+
# ------------------------------------------------
|
445
|
+
# Textarea elements
|
446
|
+
|
447
|
+
it 'Make a form with textarea(label, name)' do
|
448
|
+
out = form_for(@data, :method => :get) do |f|
|
449
|
+
f.textarea 'Message', :message
|
450
|
+
end
|
399
451
|
|
400
|
-
it 'makes form with radio(label, name, values) with selection from array' do
|
401
|
-
out = form(:method => :get){|f|
|
402
|
-
f.radio 'Server', :server, servers_array, :checked => 'Mongrel'
|
403
|
-
}
|
404
452
|
assert(<<-FORM, out)
|
405
453
|
<form method="get">
|
406
|
-
<
|
407
|
-
<
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
454
|
+
<p>
|
455
|
+
<label for="form_message">Message</label>
|
456
|
+
<textarea name="message" id="form_message">Hello, textarea!</textarea>
|
457
|
+
</p>
|
458
|
+
</form>
|
459
|
+
FORM
|
460
|
+
end
|
461
|
+
|
462
|
+
it 'Make a form with textarea(label, name, value)' do
|
463
|
+
out = form_for(@data, :method => :get) do |f|
|
464
|
+
f.textarea 'Message', :message, :value => 'stuff'
|
465
|
+
end
|
466
|
+
|
467
|
+
assert(<<-FORM, out)
|
468
|
+
<form method="get">
|
469
|
+
<p>
|
470
|
+
<label for="form_message">Message</label>
|
471
|
+
<textarea name="message" id="form_message">stuff</textarea>
|
472
|
+
</p>
|
473
|
+
</form>
|
474
|
+
FORM
|
475
|
+
end
|
476
|
+
|
477
|
+
# ------------------------------------------------
|
478
|
+
# Select elements
|
479
|
+
|
480
|
+
it 'Make a form with select(label, name) from a hash' do
|
481
|
+
out = form_for(@data, :method => :get) do |f|
|
482
|
+
f.select 'Server', :servers_hash
|
483
|
+
end
|
484
|
+
|
485
|
+
assert(<<-FORM, out)
|
486
|
+
<form method="get">
|
487
|
+
<p>
|
488
|
+
<label for="form_servers_hash">Server</label>
|
489
|
+
<select id="form_servers_hash" size="3" name="servers_hash">
|
490
|
+
<option value="webrick">WEBrick</option>
|
491
|
+
<option value="mongrel">Mongrel</option>
|
492
|
+
<option value="thin">Thin</option>
|
493
|
+
</select>
|
494
|
+
</p>
|
495
|
+
</form>
|
496
|
+
FORM
|
497
|
+
end
|
498
|
+
|
499
|
+
it 'Make a form with select(label, name, selected) from a hash' do
|
500
|
+
out = form_for(@data, :method => :get) do |f|
|
501
|
+
f.select 'Server', :servers_hash, :selected => :mongrel
|
502
|
+
end
|
503
|
+
|
504
|
+
assert(<<-FORM, out)
|
505
|
+
<form method="get">
|
506
|
+
<p>
|
507
|
+
<label for="form_servers_hash">Server</label>
|
508
|
+
<select id="form_servers_hash" size="3" name="servers_hash">
|
509
|
+
<option value="webrick">WEBrick</option>
|
510
|
+
<option value="mongrel" selected="selected">Mongrel</option>
|
511
|
+
<option value="thin">Thin</option>
|
512
|
+
</select>
|
513
|
+
</p>
|
514
|
+
</form>
|
515
|
+
FORM
|
516
|
+
end
|
517
|
+
|
518
|
+
it 'Make a form with select(label, name) from an array' do
|
519
|
+
out = form_for(@data, :method => :get) do |f|
|
520
|
+
f.select 'Server', :servers_array
|
521
|
+
end
|
522
|
+
|
523
|
+
assert(<<-FORM, out)
|
524
|
+
<form method="get">
|
525
|
+
<p>
|
526
|
+
<label for="form_servers_array">Server</label>
|
527
|
+
<select id="form_servers_array" size="3" name="servers_array">
|
528
|
+
<option value="WEBrick">WEBrick</option>
|
529
|
+
<option value="Mongrel">Mongrel</option>
|
530
|
+
<option value="Thin">Thin</option>
|
531
|
+
</select>
|
532
|
+
</p>
|
413
533
|
</form>
|
414
534
|
FORM
|
415
535
|
end
|
416
536
|
|
417
|
-
it '
|
537
|
+
it 'Make a form with select(label, name, selected) from an array' do
|
538
|
+
out = form_for(@data, :method => :get) do |f|
|
539
|
+
f.select 'Server', :servers_array, :selected => 'Mongrel'
|
540
|
+
end
|
541
|
+
|
542
|
+
assert(<<-FORM, out)
|
543
|
+
<form method="get">
|
544
|
+
<p>
|
545
|
+
<label for="form_servers_array">Server</label>
|
546
|
+
<select id="form_servers_array" size="3" name="servers_array">
|
547
|
+
<option value="WEBrick">WEBrick</option>
|
548
|
+
<option value="Mongrel" selected="selected">Mongrel</option>
|
549
|
+
<option value="Thin">Thin</option>
|
550
|
+
</select>
|
551
|
+
</p>
|
552
|
+
</form>
|
553
|
+
FORM
|
554
|
+
end
|
555
|
+
|
556
|
+
# ------------------------------------------------
|
557
|
+
# Select elements with custom values
|
558
|
+
|
559
|
+
it 'Make a form with select(label, name) from a hash using custom values' do
|
560
|
+
out = form_for(@data, :method => :get) do |f|
|
561
|
+
f.select 'People', :people_hash, :values => {:chuck => 'Chuck', :bob => 'Bob'}
|
562
|
+
end
|
563
|
+
|
564
|
+
assert(<<-FORM, out)
|
565
|
+
<form method="get">
|
566
|
+
<p>
|
567
|
+
<label for="form_people_hash">People</label>
|
568
|
+
<select id="form_people_hash" size="2" name="people_hash">
|
569
|
+
<option value="chuck">Chuck</option>
|
570
|
+
<option value="bob">Bob</option>
|
571
|
+
</select>
|
572
|
+
</p>
|
573
|
+
</form>
|
574
|
+
FORM
|
575
|
+
end
|
576
|
+
|
577
|
+
it 'Make a form with select(label, name, selected) from a hash using custom values' do
|
578
|
+
out = form_for(@data, :method => :get) do |f|
|
579
|
+
f.select 'People', :people_hash, :values => {:chuck => 'Chuck', :bob => 'Bob'}, :selected => :chuck
|
580
|
+
end
|
581
|
+
|
582
|
+
assert(<<-FORM, out)
|
583
|
+
<form method="get">
|
584
|
+
<p>
|
585
|
+
<label for="form_people_hash">People</label>
|
586
|
+
<select id="form_people_hash" size="2" name="people_hash">
|
587
|
+
<option value="chuck" selected="selected">Chuck</option>
|
588
|
+
<option value="bob">Bob</option>
|
589
|
+
</select>
|
590
|
+
</p>
|
591
|
+
</form>
|
592
|
+
FORM
|
593
|
+
end
|
594
|
+
|
595
|
+
it 'Make a form with select(label, name) from an array using custom values' do
|
596
|
+
out = form_for(@data, :method => :get) do |f|
|
597
|
+
f.select 'People', :people_array, :values => ['Chuck', 'Bob']
|
598
|
+
end
|
599
|
+
|
600
|
+
assert(<<-FORM, out)
|
601
|
+
<form method="get">
|
602
|
+
<p>
|
603
|
+
<label for="form_people_array">People</label>
|
604
|
+
<select id="form_people_array" size="2" name="people_array">
|
605
|
+
<option value="Chuck">Chuck</option>
|
606
|
+
<option value="Bob">Bob</option>
|
607
|
+
</select>
|
608
|
+
</p>
|
609
|
+
</form>
|
610
|
+
FORM
|
611
|
+
end
|
612
|
+
|
613
|
+
it 'Make a form with select(label, name, selected) from an array using custom values' do
|
614
|
+
out = form_for(@data, :method => :get) do |f|
|
615
|
+
f.select 'People', :people_array, :values => ['Chuck', 'Bob'], :selected => 'Chuck'
|
616
|
+
end
|
617
|
+
|
618
|
+
assert(<<-FORM, out)
|
619
|
+
<form method="get">
|
620
|
+
<p>
|
621
|
+
<label for="form_people_array">People</label>
|
622
|
+
<select id="form_people_array" size="2" name="people_array">
|
623
|
+
<option value="Chuck" selected="selected">Chuck</option>
|
624
|
+
<option value="Bob">Bob</option>
|
625
|
+
</select>
|
626
|
+
</p>
|
627
|
+
</form>
|
628
|
+
FORM
|
629
|
+
end
|
630
|
+
|
631
|
+
it 'Make a form with multiple select(label, name) from a hash' do
|
632
|
+
out = form_for(@data, :method => :get) do |f|
|
633
|
+
f.select 'Server', :servers_hash, :multiple => :multiple
|
634
|
+
end
|
635
|
+
|
636
|
+
assert(<<-FORM, out)
|
637
|
+
<form method="get">
|
638
|
+
<p>
|
639
|
+
<label for="form_servers_hash">Server</label>
|
640
|
+
<select id="form_servers_hash" size="3" name="servers_hash[]" multiple="multiple">
|
641
|
+
<option value="webrick">WEBrick</option>
|
642
|
+
<option value="mongrel">Mongrel</option>
|
643
|
+
<option value="thin">Thin</option>
|
644
|
+
</select>
|
645
|
+
</p>
|
646
|
+
</form>
|
647
|
+
FORM
|
648
|
+
end
|
649
|
+
|
650
|
+
it 'Make a form with multiple select(label, name, selected) from a hash' do
|
651
|
+
out = form_for(@data, :method => :get) do |f|
|
652
|
+
f.select 'Server', :servers_hash, :multiple => :multiple, :selected => :webrick
|
653
|
+
end
|
654
|
+
|
655
|
+
assert(<<-FORM, out)
|
656
|
+
<form method="get">
|
657
|
+
<p>
|
658
|
+
<label for="form_servers_hash">Server</label>
|
659
|
+
<select id="form_servers_hash" size="3" name="servers_hash[]" multiple="multiple">
|
660
|
+
<option value="webrick" selected="selected">WEBrick</option>
|
661
|
+
<option value="mongrel">Mongrel</option>
|
662
|
+
<option value="thin">Thin</option>
|
663
|
+
</select>
|
664
|
+
</p>
|
665
|
+
</form>
|
666
|
+
FORM
|
667
|
+
end
|
668
|
+
|
669
|
+
it 'Make a form with multiple select(label, name, selected) from a hash' do
|
670
|
+
out = form_for(@data, :method => :get) do |f|
|
671
|
+
f.select 'Server', :servers_hash, :multiple => :multiple, :selected => [:webrick, :mongrel]
|
672
|
+
end
|
673
|
+
|
674
|
+
assert(<<-FORM, out)
|
675
|
+
<form method="get">
|
676
|
+
<p>
|
677
|
+
<label for="form_servers_hash">Server</label>
|
678
|
+
<select id="form_servers_hash" size="3" name="servers_hash[]" multiple="multiple">
|
679
|
+
<option value="webrick" selected="selected">WEBrick</option>
|
680
|
+
<option value="mongrel" selected="selected">Mongrel</option>
|
681
|
+
<option value="thin">Thin</option>
|
682
|
+
</select>
|
683
|
+
</p>
|
684
|
+
</form>
|
685
|
+
FORM
|
686
|
+
end
|
687
|
+
|
688
|
+
# ------------------------------------------------
|
689
|
+
# Error messages
|
690
|
+
|
691
|
+
it 'Insert an error message' do
|
418
692
|
form_error :username, 'May not be empty'
|
419
|
-
out =
|
693
|
+
out = form_for(@data, :method => :get) do |f|
|
420
694
|
f.input_text 'Username', :username
|
421
|
-
|
695
|
+
end
|
696
|
+
|
422
697
|
assert(<<-FORM, out)
|
423
698
|
<form method="get">
|
424
|
-
<
|
425
|
-
<
|
426
|
-
|
427
|
-
|
428
|
-
</p>
|
429
|
-
</fieldset>
|
699
|
+
<p>
|
700
|
+
<label for="form_username">Username <span class="error">May not be empty</span></label>
|
701
|
+
<input type="text" name="username" id="form_username" value="mrfoo" />
|
702
|
+
</p>
|
430
703
|
</form>
|
431
704
|
FORM
|
432
705
|
end
|
706
|
+
|
707
|
+
it 'Retrieve all errors messages from the model' do
|
708
|
+
@data.errors = {:username => "May not be empty"}
|
709
|
+
form_errors_from_model(@data)
|
710
|
+
|
711
|
+
out = form_for(@data, :method => :get) do |f|
|
712
|
+
f.input_text 'Username', :username
|
713
|
+
end
|
714
|
+
|
715
|
+
assert(<<-FORM, out)
|
716
|
+
<form method="get">
|
717
|
+
<p>
|
718
|
+
<label for="form_username">Username <span class="error">May not be empty</span></label>
|
719
|
+
<input type="text" name="username" id="form_username" value="mrfoo" />
|
720
|
+
</p>
|
721
|
+
</form>
|
722
|
+
FORM
|
723
|
+
end
|
724
|
+
|
433
725
|
end
|