ramaze 2010.06.18 → 2011.01
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/.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
|