forme 2.1.0 → 2.3.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.
- checksums.yaml +4 -4
- data/CHANGELOG +16 -0
- data/README.rdoc +10 -5
- data/lib/forme/bs3.rb +7 -7
- data/lib/forme/bs5.rb +213 -0
- data/lib/forme/form.rb +2 -0
- data/lib/forme/transformers/error_handler.rb +10 -10
- data/lib/forme/transformers/formatter.rb +32 -34
- data/lib/forme/version.rb +1 -1
- data/lib/forme.rb +2 -1
- data/lib/roda/plugins/forme_set.rb +5 -3
- data/lib/sequel/plugins/forme.rb +8 -6
- data/lib/sequel/plugins/forme_set.rb +4 -4
- metadata +7 -24
- data/Rakefile +0 -82
- data/spec/all.rb +0 -2
- data/spec/bs3_reference_spec.rb +0 -358
- data/spec/bs3_sequel_plugin_spec.rb +0 -523
- data/spec/bs3_spec.rb +0 -722
- data/spec/erb_helper.rb +0 -198
- data/spec/erubi_capture_helper.rb +0 -198
- data/spec/forme_coverage.rb +0 -13
- data/spec/forme_spec.rb +0 -1216
- data/spec/rails_integration_spec.rb +0 -274
- data/spec/roda_integration_spec.rb +0 -523
- data/spec/sequel_helper.rb +0 -101
- data/spec/sequel_i18n_helper.rb +0 -40
- data/spec/sequel_i18n_plugin_spec.rb +0 -31
- data/spec/sequel_plugin_spec.rb +0 -600
- data/spec/sequel_set_plugin_spec.rb +0 -232
- data/spec/shared_erb_specs.rb +0 -71
- data/spec/sinatra_integration_spec.rb +0 -45
- data/spec/spec_helper.rb +0 -31
data/spec/bs3_spec.rb
DELETED
@@ -1,722 +0,0 @@
|
|
1
|
-
require_relative 'spec_helper'
|
2
|
-
require_relative '../lib/forme/bs3'
|
3
|
-
|
4
|
-
describe "Forme Bootstrap3 (BS3) forms" do
|
5
|
-
def sel(opts, s)
|
6
|
-
opts.map{|o| "<option #{'selected="selected" ' if o == s}value=\"#{o}\">#{sprintf("%02i", o)}</option>"}.join
|
7
|
-
end
|
8
|
-
|
9
|
-
before do
|
10
|
-
@f = Forme::Form.new(:config=>:bs3)
|
11
|
-
end
|
12
|
-
|
13
|
-
it "should create a simple input tags" do
|
14
|
-
@f.input(:text).to_s.must_equal '<div class="form-group"><input class="form-control" type="text"/></div>'
|
15
|
-
@f.input(:radio).to_s.must_equal '<div class="radio"><input type="radio"/></div>'
|
16
|
-
@f.input(:password).to_s.must_equal '<div class="form-group"><input class="form-control" type="password"/></div>'
|
17
|
-
@f.input(:checkbox).to_s.must_equal '<div class="checkbox"><input type="checkbox"/></div>'
|
18
|
-
@f.input(:submit).to_s.must_equal '<input class="btn btn-default" type="submit"/>'
|
19
|
-
end
|
20
|
-
|
21
|
-
it "should use :name option as attribute" do
|
22
|
-
@f.input(:text, :name=>"foo").to_s.must_equal '<div class="form-group"><input class="form-control" name="foo" type="text"/></div>'
|
23
|
-
end
|
24
|
-
|
25
|
-
it "should use :id option as attribute" do
|
26
|
-
@f.input(:text, :id=>"foo").to_s.must_equal '<div class="form-group"><input class="form-control" id="foo" type="text"/></div>'
|
27
|
-
end
|
28
|
-
|
29
|
-
it "should use :class option as attribute" do
|
30
|
-
@f.input(:text, :class=>"foo").to_s.must_equal '<div class="form-group"><input class="form-control foo" type="text"/></div>'
|
31
|
-
end
|
32
|
-
|
33
|
-
it "should use :value option as attribute" do
|
34
|
-
@f.input(:text, :value=>"foo").to_s.must_equal '<div class="form-group"><input class="form-control" type="text" value="foo"/></div>'
|
35
|
-
end
|
36
|
-
|
37
|
-
it "should use :placeholder option as attribute" do
|
38
|
-
@f.input(:text, :placeholder=>"foo").to_s.must_equal '<div class="form-group"><input class="form-control" placeholder="foo" type="text"/></div>'
|
39
|
-
end
|
40
|
-
|
41
|
-
it "should use :style option as attribute" do
|
42
|
-
@f.input(:text, :style=>"foo").to_s.must_equal '<div class="form-group"><input class="form-control" style="foo" type="text"/></div>'
|
43
|
-
end
|
44
|
-
|
45
|
-
it "should use :key option as name and id attributes" do
|
46
|
-
@f.input(:text, :key=>"foo").to_s.must_equal '<div class="form-group"><input class="form-control" id="foo" name="foo" type="text"/></div>'
|
47
|
-
end
|
48
|
-
|
49
|
-
it "should use :key_id option as suffix for :key option id attributes" do
|
50
|
-
@f.input(:text, :key=>"foo", :key_id=>'bar').to_s.must_equal '<div class="form-group"><input class="form-control" id="foo_bar" name="foo" type="text"/></div>'
|
51
|
-
end
|
52
|
-
|
53
|
-
it "should have :key option respect :multiple option" do
|
54
|
-
@f.input(:text, :key=>"foo", :multiple=>true).to_s.must_equal '<div class="form-group"><input class="form-control" id="foo" name="foo[]" type="text"/></div>'
|
55
|
-
end
|
56
|
-
|
57
|
-
it "should use :key option respect form's current namespace" do
|
58
|
-
@f.with_opts(:namespace=>['bar']) do
|
59
|
-
@f.input(:text, :key=>"foo").to_s.must_equal '<div class="form-group"><input class="form-control" id="bar_foo" name="bar[foo]" type="text"/></div>'
|
60
|
-
@f.input(:text, :key=>"foo", :multiple=>true).to_s.must_equal '<div class="form-group"><input class="form-control" id="bar_foo" name="bar[foo][]" type="text"/></div>'
|
61
|
-
@f.with_opts(:namespace=>['bar', 'baz']) do
|
62
|
-
@f.input(:text, :key=>"foo").to_s.must_equal '<div class="form-group"><input class="form-control" id="bar_baz_foo" name="bar[baz][foo]" type="text"/></div>'
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
it "should consider form's :values hash for default values based on the :key option if :value is not present" do
|
68
|
-
@f.opts[:values] = {'foo'=>'baz'}
|
69
|
-
@f.input(:text, :key=>"foo").to_s.must_equal '<div class="form-group"><input class="form-control" id="foo" name="foo" type="text" value="baz"/></div>'
|
70
|
-
@f.input(:text, :key=>"foo", :value=>'x').to_s.must_equal '<div class="form-group"><input class="form-control" id="foo" name="foo" type="text" value="x"/></div>'
|
71
|
-
|
72
|
-
@f.input(:text, :key=>:foo).to_s.must_equal '<div class="form-group"><input class="form-control" id="foo" name="foo" type="text" value="baz"/></div>'
|
73
|
-
@f.opts[:values] = {:foo=>'baz'}
|
74
|
-
@f.input(:text, :key=>:foo).to_s.must_equal '<div class="form-group"><input class="form-control" id="foo" name="foo" type="text" value="baz"/></div>'
|
75
|
-
end
|
76
|
-
|
77
|
-
it "should consider form's :values hash for default values based on the :key option when using namespaces" do
|
78
|
-
@f.opts[:values] = {'bar'=>{'foo'=>'baz'}}
|
79
|
-
@f.with_opts(:namespace=>['bar']) do
|
80
|
-
@f.input(:text, :key=>"foo").to_s.must_equal '<div class="form-group"><input class="form-control" id="bar_foo" name="bar[foo]" type="text" value="baz"/></div>'
|
81
|
-
@f.input(:text, :key=>"foo", :value=>'x').to_s.must_equal '<div class="form-group"><input class="form-control" id="bar_foo" name="bar[foo]" type="text" value="x"/></div>'
|
82
|
-
@f.input(:text, :key=>:foo).to_s.must_equal '<div class="form-group"><input class="form-control" id="bar_foo" name="bar[foo]" type="text" value="baz"/></div>'
|
83
|
-
end
|
84
|
-
|
85
|
-
@f.with_opts(:namespace=>[:bar]) do
|
86
|
-
@f.input(:text, :key=>:foo).to_s.must_equal '<div class="form-group"><input class="form-control" id="bar_foo" name="bar[foo]" type="text" value="baz"/></div>'
|
87
|
-
|
88
|
-
@f.opts[:values] = {:bar=>{:foo=>'baz'}}
|
89
|
-
@f.input(:text, :key=>:foo).to_s.must_equal '<div class="form-group"><input class="form-control" id="bar_foo" name="bar[foo]" type="text" value="baz"/></div>'
|
90
|
-
@f.opts[:values] = {:bar=>{}}
|
91
|
-
@f.input(:text, :key=>:foo).to_s.must_equal '<div class="form-group"><input class="form-control" id="bar_foo" name="bar[foo]" type="text"/></div>'
|
92
|
-
@f.opts[:values] = {}
|
93
|
-
@f.input(:text, :key=>:foo).to_s.must_equal '<div class="form-group"><input class="form-control" id="bar_foo" name="bar[foo]" type="text"/></div>'
|
94
|
-
|
95
|
-
@f.opts[:values] = {'bar'=>{'quux'=>{'foo'=>'baz'}}}
|
96
|
-
@f.with_opts(:namespace=>['bar', 'quux']) do
|
97
|
-
@f.input(:text, :key=>"foo").to_s.must_equal '<div class="form-group"><input class="form-control" id="bar_quux_foo" name="bar[quux][foo]" type="text" value="baz"/></div>'
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
it "should consider form's :errors hash based on the :key option" do
|
103
|
-
@f.opts[:errors] = { 'foo' => 'must be present' }
|
104
|
-
@f.input(:text, :key=>"foo").to_s.must_equal "<div class=\"form-group has-error\"><input aria-describedby=\"foo_error_message\" aria-invalid=\"true\" class=\"form-control\" id=\"foo\" name=\"foo\" type=\"text\"/><span class=\"help-block with-errors\">must be present</span></div>"
|
105
|
-
end
|
106
|
-
|
107
|
-
it "should consider form's :errors hash based on the :key option when using namespaces" do
|
108
|
-
@f.opts[:errors] = { 'bar' => { 'foo' => 'must be present' } }
|
109
|
-
@f.with_opts(:namespace=>['bar']) do
|
110
|
-
@f.input(:text, :key=>"foo").to_s.must_equal "<div class=\"form-group has-error\"><input aria-describedby=\"bar_foo_error_message\" aria-invalid=\"true\" class=\"form-control\" id=\"bar_foo\" name=\"bar[foo]\" type=\"text\"/><span class=\"help-block with-errors\">must be present</span></div>"
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
it "should support a with_obj method that changes the object and namespace for the given block" do
|
115
|
-
@f.with_obj([:a, :c], 'bar') do
|
116
|
-
@f.input(:first).to_s.must_equal '<div class="form-group"><input class="form-control" id="bar_first" name="bar[first]" type="text" value="a"/></div>'
|
117
|
-
@f.with_obj([:b], 'baz') do
|
118
|
-
@f.input(:first).to_s.must_equal '<div class="form-group"><input class="form-control" id="bar_baz_first" name="bar[baz][first]" type="text" value="b"/></div>'
|
119
|
-
end
|
120
|
-
@f.with_obj([:b], %w'baz quux') do
|
121
|
-
@f.input(:first).to_s.must_equal '<div class="form-group"><input class="form-control" id="bar_baz_quux_first" name="bar[baz][quux][first]" type="text" value="b"/></div>'
|
122
|
-
end
|
123
|
-
@f.with_obj([:b]) do
|
124
|
-
@f.input(:first).to_s.must_equal '<div class="form-group"><input class="form-control" id="bar_first" name="bar[first]" type="text" value="b"/></div>'
|
125
|
-
end
|
126
|
-
@f.input(:last).to_s.must_equal '<div class="form-group"><input class="form-control" id="bar_last" name="bar[last]" type="text" value="c"/></div>'
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
it "should support a each_obj method that changes the object and namespace for multiple objects for the given block" do
|
131
|
-
@f.tag(:form) do
|
132
|
-
@f.each_obj([[:a, :c], [:b, :d]], 'bar') do
|
133
|
-
@f.input(:first)
|
134
|
-
@f.input(:last)
|
135
|
-
end
|
136
|
-
end.to_s.must_equal '<form><div class="form-group"><input class="form-control" id="bar_0_first" name="bar[0][first]" type="text" value="a"/></div><div class="form-group"><input class="form-control" id="bar_0_last" name="bar[0][last]" type="text" value="c"/></div><div class="form-group"><input class="form-control" id="bar_1_first" name="bar[1][first]" type="text" value="b"/></div><div class="form-group"><input class="form-control" id="bar_1_last" name="bar[1][last]" type="text" value="d"/></div></form>'
|
137
|
-
|
138
|
-
@f.tag(:form) do
|
139
|
-
@f.each_obj([[:a, :c], [:b, :d]], %w'bar baz') do
|
140
|
-
@f.input(:first)
|
141
|
-
@f.input(:last)
|
142
|
-
end
|
143
|
-
end.to_s.must_equal '<form><div class="form-group"><input class="form-control" id="bar_baz_0_first" name="bar[baz][0][first]" type="text" value="a"/></div><div class="form-group"><input class="form-control" id="bar_baz_0_last" name="bar[baz][0][last]" type="text" value="c"/></div><div class="form-group"><input class="form-control" id="bar_baz_1_first" name="bar[baz][1][first]" type="text" value="b"/></div><div class="form-group"><input class="form-control" id="bar_baz_1_last" name="bar[baz][1][last]" type="text" value="d"/></div></form>'
|
144
|
-
|
145
|
-
@f.tag(:form) do
|
146
|
-
@f.each_obj([[:a, :c], [:b, :d]]) do
|
147
|
-
@f.input(:first)
|
148
|
-
@f.input(:last)
|
149
|
-
end
|
150
|
-
end.to_s.must_equal '<form><div class="form-group"><input class="form-control" id="0_first" name="0[first]" type="text" value="a"/></div><div class="form-group"><input class="form-control" id="0_last" name="0[last]" type="text" value="c"/></div><div class="form-group"><input class="form-control" id="1_first" name="1[first]" type="text" value="b"/></div><div class="form-group"><input class="form-control" id="1_last" name="1[last]" type="text" value="d"/></div></form>'
|
151
|
-
end
|
152
|
-
|
153
|
-
it "should allow overriding form inputs on a per-block basis" do
|
154
|
-
@f.input(:text).to_s.must_equal '<div class="form-group"><input class="form-control" type="text"/></div>'
|
155
|
-
@f.with_opts(:wrapper=>:div){@f.input(:text).to_s}.must_equal '<div><input class="form-control" type="text"/></div>'
|
156
|
-
@f.with_opts(:wrapper=>:div){@f.input(:text).to_s.must_equal '<div><input class="form-control" type="text"/></div>'}
|
157
|
-
@f.with_opts(:wrapper=>:div) do
|
158
|
-
@f.input(:text).to_s.must_equal '<div><input class="form-control" type="text"/></div>'
|
159
|
-
@f.with_opts(:wrapper=>:li){@f.input(:text).to_s.must_equal '<li><input class="form-control" type="text"/></li>'}
|
160
|
-
@f.input(:text).to_s.must_equal '<div><input class="form-control" type="text"/></div>'
|
161
|
-
end
|
162
|
-
@f.input(:text).to_s.must_equal '<div class="form-group"><input class="form-control" type="text"/></div>'
|
163
|
-
end
|
164
|
-
|
165
|
-
it "should handle delayed formatting when overriding form inputs on a per-block basis" do
|
166
|
-
@f.form do
|
167
|
-
@f.input(:text)
|
168
|
-
@f.with_opts(:wrapper=>:div) do
|
169
|
-
@f.input(:text)
|
170
|
-
@f.with_opts(:wrapper=>:li){@f.input(:text)}
|
171
|
-
@f.input(:text)
|
172
|
-
end
|
173
|
-
@f.input(:text)
|
174
|
-
end.to_s.must_equal '<form><div class="form-group"><input class="form-control" type="text"/></div><div><input class="form-control" type="text"/></div><li><input class="form-control" type="text"/></li><div><input class="form-control" type="text"/></div><div class="form-group"><input class="form-control" type="text"/></div></form>'
|
175
|
-
end
|
176
|
-
|
177
|
-
it "should support :obj method to with_opts for changing the obj inside the block" do
|
178
|
-
@f.form do
|
179
|
-
@f.with_opts(:obj=>[:a, :c]) do
|
180
|
-
@f.input(:first)
|
181
|
-
@f.with_opts(:obj=>[:b]){@f.input(:first)}
|
182
|
-
@f.input(:last)
|
183
|
-
end
|
184
|
-
end.to_s.must_equal '<form><div class="form-group"><input class="form-control" id="first" name="first" type="text" value="a"/></div><div class="form-group"><input class="form-control" id="first" name="first" type="text" value="b"/></div><div class="form-group"><input class="form-control" id="last" name="last" type="text" value="c"/></div></form>'
|
185
|
-
end
|
186
|
-
|
187
|
-
it "should allow arbitrary attributes using the :attr option" do
|
188
|
-
@f.input(:text, :attr=>{:bar=>"foo"}).to_s.must_equal '<div class="form-group"><input bar="foo" class="form-control" type="text"/></div>'
|
189
|
-
end
|
190
|
-
|
191
|
-
it "should convert the :data option into attributes" do
|
192
|
-
@f.input(:text, :data=>{:bar=>"foo"}).to_s.must_equal '<div class="form-group"><input class="form-control" data-bar="foo" type="text"/></div>'
|
193
|
-
end
|
194
|
-
|
195
|
-
it "should not have standard options override the :attr option" do
|
196
|
-
@f.input(:text, :name=>:bar, :attr=>{:name=>"foo"}).to_s.must_equal '<div class="form-group"><input class="form-control" name="foo" type="text"/></div>'
|
197
|
-
end
|
198
|
-
|
199
|
-
it "should combine :class standard option with :attr option" do
|
200
|
-
@f.input(:text, :class=>:bar, :attr=>{:class=>"foo"}).to_s.must_equal '<div class="form-group"><input class="form-control foo bar" type="text"/></div>'
|
201
|
-
end
|
202
|
-
|
203
|
-
it "should not have :data options override the :attr option" do
|
204
|
-
@f.input(:text, :data=>{:bar=>"baz"}, :attr=>{:"data-bar"=>"foo"}).to_s.must_equal '<div class="form-group"><input class="form-control" data-bar="foo" type="text"/></div>'
|
205
|
-
end
|
206
|
-
|
207
|
-
it "should use :size and :maxlength options as attributes for text inputs" do
|
208
|
-
@f.input(:text, :size=>5, :maxlength=>10).to_s.must_equal '<div class="form-group"><input class="form-control" maxlength="10" size="5" type="text"/></div>'
|
209
|
-
@f.input(:textarea, :size=>5, :maxlength=>10).to_s.must_equal '<div class="form-group"><textarea class="form-control"></textarea></div>'
|
210
|
-
end
|
211
|
-
|
212
|
-
it "should create hidden input with value 0 for each checkbox with a name" do
|
213
|
-
@f.input(:checkbox, :name=>"foo").to_s.must_equal '<div class="checkbox"><input name="foo" type="hidden" value="0"/><input name="foo" type="checkbox"/></div>'
|
214
|
-
end
|
215
|
-
|
216
|
-
it "should not create hidden input with value 0 for each checkbox with a name if :no_hidden option is used" do
|
217
|
-
@f.input(:checkbox, :name=>"foo", :no_hidden=>true).to_s.must_equal '<div class="checkbox"><input name="foo" type="checkbox"/></div>'
|
218
|
-
end
|
219
|
-
|
220
|
-
it "should create hidden input with _hidden appended to id for each checkbox with a name and id" do
|
221
|
-
@f.input(:checkbox, :name=>"foo", :id=>"bar").to_s.must_equal '<div class="checkbox"><input id="bar_hidden" name="foo" type="hidden" value="0"/><input id="bar" name="foo" type="checkbox"/></div>'
|
222
|
-
end
|
223
|
-
|
224
|
-
it "should create hidden input with value f for each checkbox with a name and value t" do
|
225
|
-
@f.input(:checkbox, :name=>"foo", :value=>"t").to_s.must_equal '<div class="checkbox"><input name="foo" type="hidden" value="f"/><input name="foo" type="checkbox" value="t"/></div>'
|
226
|
-
end
|
227
|
-
|
228
|
-
it "should use :hidden_value option for value of hidden input for checkbox" do
|
229
|
-
@f.input(:checkbox, :name=>"foo", :hidden_value=>"no").to_s.must_equal '<div class="checkbox"><input name="foo" type="hidden" value="no"/><input name="foo" type="checkbox"/></div>'
|
230
|
-
end
|
231
|
-
|
232
|
-
it "should create hidden input" do
|
233
|
-
@f.input(:hidden).to_s.must_equal '<input type="hidden"/>'
|
234
|
-
end
|
235
|
-
|
236
|
-
it "should handle :checked option" do
|
237
|
-
@f.input(:checkbox, :checked=>true).to_s.must_equal '<div class="checkbox"><input checked="checked" type="checkbox"/></div>'
|
238
|
-
@f.input(:checkbox, :checked=>false).to_s.must_equal '<div class="checkbox"><input type="checkbox"/></div>'
|
239
|
-
end
|
240
|
-
|
241
|
-
it "should create textarea tag" do
|
242
|
-
@f.input(:textarea).to_s.must_equal '<div class="form-group"><textarea class="form-control"></textarea></div>'
|
243
|
-
@f.input(:textarea, :value=>'a').to_s.must_equal '<div class="form-group"><textarea class="form-control">a</textarea></div>'
|
244
|
-
end
|
245
|
-
|
246
|
-
it "should use :cols and :rows options as attributes for textarea inputs" do
|
247
|
-
@f.input(:text, :cols=>5, :rows=>10).to_s.must_equal '<div class="form-group"><input class="form-control" type="text"/></div>'
|
248
|
-
@f.input(:textarea, :cols=>5, :rows=>10).to_s.must_equal '<div class="form-group"><textarea class="form-control" cols="5" rows="10"></textarea></div>'
|
249
|
-
end
|
250
|
-
|
251
|
-
it "should create select tag" do
|
252
|
-
@f.input(:select).to_s.must_equal '<div class="form-group"><select class="form-control"></select></div>'
|
253
|
-
end
|
254
|
-
|
255
|
-
it "should respect multiple and size options in select tag" do
|
256
|
-
@f.input(:select, :multiple=>true, :size=>10).to_s.must_equal '<div class="form-group"><select class="form-control" multiple="multiple" size="10"></select></div>'
|
257
|
-
end
|
258
|
-
|
259
|
-
it "should create date tag" do
|
260
|
-
@f.input(:date).to_s.must_equal '<div class="form-group"><input class="form-control" type="date"/></div>'
|
261
|
-
end
|
262
|
-
|
263
|
-
it "should create datetime-local tag" do
|
264
|
-
@f.input(:datetime).to_s.must_equal '<div class="form-group"><input class="form-control" type="datetime-local"/></div>'
|
265
|
-
end
|
266
|
-
|
267
|
-
it "should not error for input type :input" do
|
268
|
-
@f.input(:input).to_s.must_equal '<div class="form-group"><input class="form-control" type="input"/></div>'
|
269
|
-
end
|
270
|
-
|
271
|
-
it "should use multiple select boxes for dates if the :as=>:select option is given" do
|
272
|
-
@f.input(:date, :name=>"foo", :id=>"bar", :as=>:select, :value=>Date.new(2011, 6, 5)).to_s.must_equal %{<div class="form-group"><select class="form-control" id="bar" name="foo[year]">#{sel(1900..2050, 2011)}</select>-<select class="form-control" id="bar_month" name="foo[month]">#{sel(1..12, 6)}</select>-<select class="form-control" id="bar_day" name="foo[day]">#{sel(1..31, 5)}</select></div>}
|
273
|
-
end
|
274
|
-
|
275
|
-
it "should allow ordering date select boxes via :order" do
|
276
|
-
@f.input(:date, :name=>"foo", :id=>"bar", :as=>:select, :value=>Date.new(2011, 6, 5), :order=>[:month, '/', :day, '/', :year]).to_s.must_equal %{<div class="form-group"><select class="form-control" id="bar" name="foo[month]">#{sel(1..12, 6)}</select>/<select class="form-control" id="bar_day" name="foo[day]">#{sel(1..31, 5)}</select>/<select class="form-control" id="bar_year" name="foo[year]">#{sel(1900..2050, 2011)}</select></div>}
|
277
|
-
end
|
278
|
-
|
279
|
-
it "should allow only using specific date select boxes via :order" do
|
280
|
-
@f.input(:date, :name=>"foo", :id=>"bar", :as=>:select, :value=>Date.new(2011, 6, 5), :order=>[:month, :year]).to_s.must_equal %{<div class="form-group"><select class="form-control" id="bar" name="foo[month]">#{sel(1..12, 6)}</select><select class="form-control" id="bar_year" name="foo[year]">#{sel(1900..2050, 2011)}</select></div>}
|
281
|
-
end
|
282
|
-
|
283
|
-
it "should support :select_options for dates when :as=>:select is given" do
|
284
|
-
@f.input(:date, :name=>"foo", :id=>"bar", :as=>:select, :value=>Date.new(2011, 6, 5), :select_options=>{:year=>1970..2020}).to_s.must_equal %{<div class=\"form-group\"><select class="form-control" id="bar" name="foo[year]">#{sel(1970..2020, 2011)}</select>-<select class="form-control" id="bar_month" name="foo[month]">#{sel(1..12, 6)}</select>-<select class="form-control" id="bar_day" name="foo[day]">#{sel(1..31, 5)}</select></div>}
|
285
|
-
end
|
286
|
-
|
287
|
-
it "should have explicit labeler and trtd wrapper work with multiple select boxes for dates" do
|
288
|
-
@f.input(:date, :name=>"foo", :id=>"bar", :as=>:select, :value=>Date.new(2011, 6, 5), :wrapper=>:trtd, :labeler=>:explicit, :label=>'Baz').to_s.must_equal %{<tr><td><label class="label-before" for="bar">Baz</label></td><td><select class="form-control" id="bar" name="foo[year]">#{sel(1900..2050, 2011)}</select>-<select class="form-control" id="bar_month" name="foo[month]">#{sel(1..12, 6)}</select>-<select class="form-control" id="bar_day" name="foo[day]">#{sel(1..31, 5)}</select></td></tr>}
|
289
|
-
end
|
290
|
-
|
291
|
-
it "should use multiple select boxes for datetimes if the :as=>:select option is given" do
|
292
|
-
@f.input(:datetime, :name=>"foo", :id=>"bar", :as=>:select, :value=>DateTime.new(2011, 6, 5, 4, 3, 2)).to_s.must_equal %{<div class=\"form-group\"><select class="form-control" id="bar" name="foo[year]">#{sel(1900..2050, 2011)}</select>-<select class="form-control" id="bar_month" name="foo[month]">#{sel(1..12, 6)}</select>-<select class="form-control" id="bar_day" name="foo[day]">#{sel(1..31, 5)}</select> <select class="form-control" id="bar_hour" name="foo[hour]">#{sel(0..23, 4)}</select>:<select class="form-control" id="bar_minute" name="foo[minute]">#{sel(0..59, 3)}</select>:<select class="form-control" id="bar_second" name="foo[second]">#{sel(0..59, 2)}</select></div>}
|
293
|
-
end
|
294
|
-
|
295
|
-
it "should allow ordering select boxes for datetimes via :order" do
|
296
|
-
@f.input(:datetime, :name=>"foo", :id=>"bar", :as=>:select, :value=>DateTime.new(2011, 6, 5, 4, 3, 2), :order=>[:day, '/', :month, 'T', :hour, ':', :minute]).to_s.must_equal %{<div class=\"form-group\"><select class="form-control" id="bar" name="foo[day]">#{sel(1..31, 5)}</select>/<select class="form-control" id="bar_month" name="foo[month]">#{sel(1..12, 6)}</select>T<select class="form-control" id="bar_hour" name="foo[hour]">#{sel(0..23, 4)}</select>:<select class="form-control" id="bar_minute" name="foo[minute]">#{sel(0..59, 3)}</select></div>}
|
297
|
-
end
|
298
|
-
|
299
|
-
it "should support :select_options for datetimes when :as=>:select option is given" do
|
300
|
-
@f.input(:datetime, :name=>"foo", :id=>"bar", :as=>:select, :value=>DateTime.new(2011, 6, 5, 10, 3, 2), :select_options=>{:year=>1970..2020, :hour=>9..17}).to_s.must_equal %{<div class="form-group"><select class="form-control" id="bar" name="foo[year]">#{sel(1970..2020, 2011)}</select>-<select class="form-control" id="bar_month" name="foo[month]">#{sel(1..12, 6)}</select>-<select class="form-control" id="bar_day" name="foo[day]">#{sel(1..31, 5)}</select> <select class="form-control" id="bar_hour" name="foo[hour]">#{sel(9..17, 10)}</select>:<select class="form-control" id="bar_minute" name="foo[minute]">#{sel(0..59, 3)}</select>:<select class="form-control" id="bar_second" name="foo[second]">#{sel(0..59, 2)}</select></div>}
|
301
|
-
end
|
302
|
-
|
303
|
-
it "should create select tag with options" do
|
304
|
-
@f.input(:select, :options=>[1, 2, 3], :selected=>2).to_s.must_equal '<div class="form-group"><select class="form-control"><option>1</option><option selected="selected">2</option><option>3</option></select></div>'
|
305
|
-
@f.input(:select, :options=>[1, 2, 3], :value=>2).to_s.must_equal '<div class="form-group"><select class="form-control"><option>1</option><option selected="selected">2</option><option>3</option></select></div>'
|
306
|
-
end
|
307
|
-
|
308
|
-
it "should create select tag with options and values" do
|
309
|
-
@f.input(:select, :options=>[[:a, 1], [:b, 2], [:c, 3]], :selected=>2).to_s.must_equal '<div class="form-group"><select class="form-control"><option value="1">a</option><option selected="selected" value="2">b</option><option value="3">c</option></select></div>'
|
310
|
-
end
|
311
|
-
|
312
|
-
it "should create select tag with option groups" do
|
313
|
-
@f.input(:select, :optgroups=>[['d', [[:a, 1], [:b, 2]]], ['e', [[:c, 3]]]], :selected=>2).to_s.must_equal '<div class="form-group"><select class="form-control"><optgroup label="d"><option value="1">a</option><option selected="selected" value="2">b</option></optgroup><optgroup label="e"><option value="3">c</option></optgroup></select></div>'
|
314
|
-
end
|
315
|
-
|
316
|
-
it "should create select tag with option groups with attributes" do
|
317
|
-
@f.input(:select, :optgroups=>[[{:label=>'d', :class=>'f'}, [[:a, 1], [:b, 2]]], [{:label=>'e', :class=>'g'}, [[:c, 3]]]], :selected=>2).to_s.must_equal '<div class="form-group"><select class="form-control"><optgroup class="f" label="d"><option value="1">a</option><option selected="selected" value="2">b</option></optgroup><optgroup class="g" label="e"><option value="3">c</option></optgroup></select></div>'
|
318
|
-
end
|
319
|
-
|
320
|
-
it "should create select tag with options and values with hashes" do
|
321
|
-
@f.input(:select, :options=>[[:a, {:foo=>1}], [:b, {:bar=>4, :value=>2}], [:c, {:baz=>3}]], :selected=>2).to_s.must_equal '<div class="form-group"><select class="form-control"><option foo="1">a</option><option bar="4" selected="selected" value="2">b</option><option baz="3">c</option></select></div>'
|
322
|
-
end
|
323
|
-
|
324
|
-
it "should create select tag with options and values using given method" do
|
325
|
-
@f.input(:select, :options=>[[:a, 1], [:b, 2], [:c, 3]], :text_method=>:last, :selected=>2).to_s.must_equal '<div class="form-group"><select class="form-control"><option>1</option><option selected="selected">2</option><option>3</option></select></div>'
|
326
|
-
@f.input(:select, :options=>[[:a, 1], [:b, 2], [:c, 3]], :text_method=>:last, :value_method=>:first, :selected=>:b).to_s.must_equal '<div class="form-group"><select class="form-control"><option value="a">1</option><option selected="selected" value="b">2</option><option value="c">3</option></select></div>'
|
327
|
-
end
|
328
|
-
|
329
|
-
it "should use html attributes specified in options" do
|
330
|
-
@f.input(:text, :value=>'foo', :name=>'bar').to_s.must_equal '<div class="form-group"><input class="form-control" name="bar" type="text" value="foo"/></div>'
|
331
|
-
@f.input(:textarea, :value=>'foo', :name=>'bar').to_s.must_equal '<div class="form-group"><textarea class="form-control" name="bar">foo</textarea></div>'
|
332
|
-
@f.input(:select, :name=>'bar', :options=>[1, 2, 3]).to_s.must_equal '<div class="form-group"><select class="form-control" name="bar"><option>1</option><option>2</option><option>3</option></select></div>'
|
333
|
-
end
|
334
|
-
|
335
|
-
it "should support :add_blank option for select inputs" do
|
336
|
-
@f.input(:select, :options=>[[:b, 2], [:c, 3]], :add_blank=>true, :value=>2).to_s.must_equal '<div class="form-group"><select class="form-control"><option value=""></option><option selected="selected" value="2">b</option><option value="3">c</option></select></div>'
|
337
|
-
end
|
338
|
-
|
339
|
-
it "should use Forme.default_add_blank_prompt value if :add_blank option is true" do
|
340
|
-
begin
|
341
|
-
Forme.default_add_blank_prompt = 'foo'
|
342
|
-
@f.input(:select, :options=>[[:b, 2], [:c, 3]], :add_blank=>true, :value=>2).to_s.must_equal '<div class="form-group"><select class="form-control"><option value="">foo</option><option selected="selected" value="2">b</option><option value="3">c</option></select></div>'
|
343
|
-
ensure
|
344
|
-
Forme.default_add_blank_prompt = nil
|
345
|
-
end
|
346
|
-
end
|
347
|
-
|
348
|
-
it "should use :add_blank option value as prompt if it is a String" do
|
349
|
-
@f.input(:select, :options=>[[:b, 2], [:c, 3]], :add_blank=>"Prompt Here", :value=>2).to_s.must_equal '<div class="form-group"><select class="form-control"><option value="">Prompt Here</option><option selected="selected" value="2">b</option><option value="3">c</option></select></div>'
|
350
|
-
end
|
351
|
-
|
352
|
-
it "should support :add_blank option with :blank_position :after for select inputs" do
|
353
|
-
@f.input(:select, :options=>[[:b, 2], [:c, 3]], :add_blank=>true, :blank_position=>:after, :value=>2).to_s.must_equal '<div class="form-group"><select class="form-control"><option selected="selected" value="2">b</option><option value="3">c</option><option value=""></option></select></div>'
|
354
|
-
end
|
355
|
-
|
356
|
-
it "should support :add_blank option with :blank_attr option for select inputs" do
|
357
|
-
@f.input(:select, :options=>[[:b, 2], [:c, 3]], :add_blank=>true, :blank_attr=>{:foo=>:bar}, :value=>2).to_s.must_equal '<div class="form-group"><select class="form-control"><option foo="bar" value=""></option><option selected="selected" value="2">b</option><option value="3">c</option></select></div>'
|
358
|
-
end
|
359
|
-
|
360
|
-
it "should create set of radio buttons" do
|
361
|
-
@f.input(:radioset, :options=>[1, 2, 3], :selected=>2).to_s.must_equal '<div class="radioset"><div class="radio"><label class="option"><input type="radio" value="1"/> 1</label></div><div class="radio"><label class="option"><input checked="checked" type="radio" value="2"/> 2</label></div><div class="radio"><label class="option"><input type="radio" value="3"/> 3</label></div></div>'
|
362
|
-
@f.input(:radioset, :options=>[1, 2, 3], :value=>2).to_s.must_equal '<div class="radioset"><div class="radio"><label class="option"><input type="radio" value="1"/> 1</label></div><div class="radio"><label class="option"><input checked="checked" type="radio" value="2"/> 2</label></div><div class="radio"><label class="option"><input type="radio" value="3"/> 3</label></div></div>'
|
363
|
-
end
|
364
|
-
|
365
|
-
it "should create set of radio buttons with options and values" do
|
366
|
-
@f.input(:radioset, :options=>[[:a, 1], [:b, 2], [:c, 3]], :selected=>2).to_s.must_equal '<div class="radioset"><div class="radio"><label class="option"><input type="radio" value="1"/> a</label></div><div class="radio"><label class="option"><input checked="checked" type="radio" value="2"/> b</label></div><div class="radio"><label class="option"><input type="radio" value="3"/> c</label></div></div>'
|
367
|
-
end
|
368
|
-
|
369
|
-
it "should create set of radio buttons with options and values with hashes" do
|
370
|
-
@f.input(:radioset, :options=>[[:a, {:attr=>{:foo=>1}}], [:b, {:class=>'foo', :value=>2}], [:c, {:id=>:baz}]], :selected=>2).to_s.must_equal '<div class="radioset"><div class="radio"><label class="option"><input foo="1" type="radio" value="a"/> a</label></div><div class="radio"><label class="option"><input checked="checked" class="foo" type="radio" value="2"/> b</label></div><div class="radio"><label class="option" for="baz"><input id="baz" type="radio" value="c"/> c</label></div></div>'
|
371
|
-
end
|
372
|
-
|
373
|
-
it "should create set of radio buttons with options and values using given method" do
|
374
|
-
@f.input(:radioset, :options=>[[:a, 1], [:b, 2], [:c, 3]], :text_method=>:last, :selected=>2).to_s.must_equal '<div class="radioset"><div class="radio"><label class="option"><input type="radio" value="1"/> 1</label></div><div class="radio"><label class="option"><input checked="checked" type="radio" value="2"/> 2</label></div><div class="radio"><label class="option"><input type="radio" value="3"/> 3</label></div></div>'
|
375
|
-
@f.input(:radioset, :options=>[[:a, 1], [:b, 2], [:c, 3]], :text_method=>:last, :value_method=>:first, :selected=>:b).to_s.must_equal '<div class="radioset"><div class="radio"><label class="option"><input type="radio" value="a"/> 1</label></div><div class="radio"><label class="option"><input checked="checked" type="radio" value="b"/> 2</label></div><div class="radio"><label class="option"><input type="radio" value="c"/> 3</label></div></div>'
|
376
|
-
end
|
377
|
-
|
378
|
-
it "should support :add_blank option for radioset inputs" do
|
379
|
-
@f.input(:radioset, :options=>[[:b, 2], [:c, 3]], :add_blank=>true, :value=>2).to_s.must_equal '<div class="radioset"><div class="radio"><label class="option"><input type="radio" value=""/> </label></div><div class="radio"><label class="option"><input checked="checked" type="radio" value="2"/> b</label></div><div class="radio"><label class="option"><input type="radio" value="3"/> c</label></div></div>'
|
380
|
-
end
|
381
|
-
|
382
|
-
it "should use :add_blank option value as prompt if it is a String" do
|
383
|
-
@f.input(:radioset, :options=>[[:b, 2], [:c, 3]], :add_blank=>"Prompt Here", :value=>2).to_s.must_equal '<div class="radioset"><div class="radio"><label class="option"><input type="radio" value=""/> Prompt Here</label></div><div class="radio"><label class="option"><input checked="checked" type="radio" value="2"/> b</label></div><div class="radio"><label class="option"><input type="radio" value="3"/> c</label></div></div>'
|
384
|
-
end
|
385
|
-
|
386
|
-
it "should respect the :key option for radio sets" do
|
387
|
-
@f.input(:radioset, :options=>[1, 2, 3], :key=>:foo, :value=>2).to_s.must_equal '<div class="radioset"><div class="radio"><label class="option" for="foo_1"><input id="foo_1" name="foo" type="radio" value="1"/> 1</label></div><div class="radio"><label class="option" for="foo_2"><input checked="checked" id="foo_2" name="foo" type="radio" value="2"/> 2</label></div><div class="radio"><label class="option" for="foo_3"><input id="foo_3" name="foo" type="radio" value="3"/> 3</label></div></div>'
|
388
|
-
end
|
389
|
-
|
390
|
-
it "should create set of radio buttons with fieldsets and legends for :optgroups" do
|
391
|
-
@f.input(:radioset, :optgroups=>[['d', [[:a, 1], [:b, 2]]], ['e', [[:c, 3]]]], :selected=>2).to_s.must_equal '<div class="radioset"><fieldset><legend>d</legend><div class="radio"><label class="option"><input type="radio" value="1"/> a</label></div><div class="radio"><label class="option"><input checked="checked" type="radio" value="2"/> b</label></div></fieldset><fieldset><legend>e</legend><div class="radio"><label class="option"><input type="radio" value="3"/> c</label></div></fieldset></div>'
|
392
|
-
end
|
393
|
-
|
394
|
-
it "should create set of radio buttons with set label" do
|
395
|
-
@f.input(:radioset, :options=>[1, 2, 3], :selected=>2, :label=>'foo').to_s.must_equal '<div class="radioset"><label>foo</label><div class="radio"><label class="option"><input type="radio" value="1"/> 1</label></div><div class="radio"><label class="option"><input checked="checked" type="radio" value="2"/> 2</label></div><div class="radio"><label class="option"><input type="radio" value="3"/> 3</label></div></div>'
|
396
|
-
end
|
397
|
-
|
398
|
-
it "should create set of checkbox buttons" do
|
399
|
-
@f.input(:checkboxset, :options=>[1, 2, 3], :selected=>2).to_s.must_equal '<div class="checkboxset"><div class="checkbox"><label class="option"><input type="checkbox" value="1"/> 1</label></div><div class="checkbox"><label class="option"><input checked="checked" type="checkbox" value="2"/> 2</label></div><div class="checkbox"><label class="option"><input type="checkbox" value="3"/> 3</label></div></div>'
|
400
|
-
@f.input(:checkboxset, :options=>[1, 2, 3], :value=>2).to_s.must_equal '<div class="checkboxset"><div class="checkbox"><label class="option"><input type="checkbox" value="1"/> 1</label></div><div class="checkbox"><label class="option"><input checked="checked" type="checkbox" value="2"/> 2</label></div><div class="checkbox"><label class="option"><input type="checkbox" value="3"/> 3</label></div></div>'
|
401
|
-
end
|
402
|
-
|
403
|
-
it "should create set of checkbox buttons with options and values" do
|
404
|
-
@f.input(:checkboxset, :options=>[[:a, 1], [:b, 2], [:c, 3]], :selected=>2).to_s.must_equal '<div class="checkboxset"><div class="checkbox"><label class="option"><input type="checkbox" value="1"/> a</label></div><div class="checkbox"><label class="option"><input checked="checked" type="checkbox" value="2"/> b</label></div><div class="checkbox"><label class="option"><input type="checkbox" value="3"/> c</label></div></div>'
|
405
|
-
end
|
406
|
-
|
407
|
-
it "should create set of checkbox buttons with options and values with hashes" do
|
408
|
-
@f.input(:checkboxset, :options=>[[:a, {:attr=>{:foo=>1}}], [:b, {:class=>'foo', :value=>2}], [:c, {:id=>:baz}]], :selected=>2).to_s.must_equal '<div class="checkboxset"><div class="checkbox"><label class="option"><input foo="1" type="checkbox" value="a"/> a</label></div><div class="checkbox"><label class="option"><input checked="checked" class="foo" type="checkbox" value="2"/> b</label></div><div class="checkbox"><label class="option" for="baz"><input id="baz" type="checkbox" value="c"/> c</label></div></div>'
|
409
|
-
end
|
410
|
-
|
411
|
-
it "should create set of checkbox buttons with options and values using given method" do
|
412
|
-
@f.input(:checkboxset, :options=>[[:a, 1], [:b, 2], [:c, 3]], :text_method=>:last, :selected=>2).to_s.must_equal '<div class="checkboxset"><div class="checkbox"><label class="option"><input type="checkbox" value="1"/> 1</label></div><div class="checkbox"><label class="option"><input checked="checked" type="checkbox" value="2"/> 2</label></div><div class="checkbox"><label class="option"><input type="checkbox" value="3"/> 3</label></div></div>'
|
413
|
-
@f.input(:checkboxset, :options=>[[:a, 1], [:b, 2], [:c, 3]], :text_method=>:last, :value_method=>:first, :selected=>:b).to_s.must_equal '<div class="checkboxset"><div class="checkbox"><label class="option"><input type="checkbox" value="a"/> 1</label></div><div class="checkbox"><label class="option"><input checked="checked" type="checkbox" value="b"/> 2</label></div><div class="checkbox"><label class="option"><input type="checkbox" value="c"/> 3</label></div></div>'
|
414
|
-
end
|
415
|
-
|
416
|
-
it "should support :add_blank option for checkboxset inputs" do
|
417
|
-
@f.input(:checkboxset, :options=>[[:b, 2], [:c, 3]], :add_blank=>true, :value=>2).to_s.must_equal '<div class="checkboxset"><div class="checkbox"><label class="option"><input type="checkbox" value=""/> </label></div><div class="checkbox"><label class="option"><input checked="checked" type="checkbox" value="2"/> b</label></div><div class="checkbox"><label class="option"><input type="checkbox" value="3"/> c</label></div></div>'
|
418
|
-
end
|
419
|
-
|
420
|
-
it "should use :add_blank option value as prompt if it is a String" do
|
421
|
-
@f.input(:checkboxset, :options=>[[:b, 2], [:c, 3]], :add_blank=>"Prompt Here", :value=>2).to_s.must_equal '<div class="checkboxset"><div class="checkbox"><label class="option"><input type="checkbox" value=""/> Prompt Here</label></div><div class="checkbox"><label class="option"><input checked="checked" type="checkbox" value="2"/> b</label></div><div class="checkbox"><label class="option"><input type="checkbox" value="3"/> c</label></div></div>'
|
422
|
-
end
|
423
|
-
|
424
|
-
it "should respect the :key option for checkbox sets" do
|
425
|
-
@f.input(:checkboxset, :options=>[1, 2, 3], :key=>:foo, :value=>2).to_s.must_equal '<div class="checkboxset"><div class="checkbox"><label class="option" for="foo_1"><input id="foo_1" name="foo[]" type="checkbox" value="1"/> 1</label></div><div class="checkbox"><label class="option" for="foo_2"><input checked="checked" id="foo_2" name="foo[]" type="checkbox" value="2"/> 2</label></div><div class="checkbox"><label class="option" for="foo_3"><input id="foo_3" name="foo[]" type="checkbox" value="3"/> 3</label></div></div>'
|
426
|
-
end
|
427
|
-
|
428
|
-
it "should prefer the :name option to :key option for checkbox sets" do
|
429
|
-
@f.input(:checkboxset, :options=>[1, 2, 3], :key=>:foo, :name=>'bar[]', :value=>2).to_s.must_equal '<div class="checkboxset"><div class="checkbox"><label class="option" for="foo_1"><input id="foo_1" name="bar[]" type="checkbox" value="1"/> 1</label></div><div class="checkbox"><label class="option" for="foo_2"><input checked="checked" id="foo_2" name="bar[]" type="checkbox" value="2"/> 2</label></div><div class="checkbox"><label class="option" for="foo_3"><input id="foo_3" name="bar[]" type="checkbox" value="3"/> 3</label></div></div>'
|
430
|
-
end
|
431
|
-
|
432
|
-
it "should prefer the :name and :id option to :key option for checkbox sets" do
|
433
|
-
@f.input(:checkboxset, :options=>[1, 2, 3], :key=>:foo, :name=>'bar[]', :id=>:baz, :value=>2).to_s.must_equal '<div class="checkboxset"><div class="checkbox"><label class="option" for="baz_1"><input id="baz_1" name="bar[]" type="checkbox" value="1"/> 1</label></div><div class="checkbox"><label class="option" for="baz_2"><input checked="checked" id="baz_2" name="bar[]" type="checkbox" value="2"/> 2</label></div><div class="checkbox"><label class="option" for="baz_3"><input id="baz_3" name="bar[]" type="checkbox" value="3"/> 3</label></div></div>'
|
434
|
-
end
|
435
|
-
|
436
|
-
it "should respect the :error option for checkbox sets" do
|
437
|
-
@f.input(:checkboxset, :options=>[1, 2, 3], :error=>'foo-checkboxset', :value=>2).to_s.must_equal '<div class="checkboxset has-error"><div class="checkbox"><label class="option"><input type="checkbox" value="1"/> 1</label></div><div class="checkbox"><label class="option"><input checked="checked" type="checkbox" value="2"/> 2</label></div><div class="checkbox"><label class="option"><input type="checkbox" value="3"/> 3</label></div><span class="help-block with-errors">foo-checkboxset</span></div>'
|
438
|
-
end
|
439
|
-
|
440
|
-
it "should create set of checkbox buttons with fieldsets and legends for optgroups" do
|
441
|
-
@f.input(:checkboxset, :optgroups=>[['d', [[:a, 1], [:b, 2]]], ['e', [[:c, 3]]]], :selected=>2).to_s.must_equal '<div class="checkboxset"><fieldset><legend>d</legend><div class="checkbox"><label class="option"><input type="checkbox" value="1"/> a</label></div><div class="checkbox"><label class="option"><input checked="checked" type="checkbox" value="2"/> b</label></div></fieldset><fieldset><legend>e</legend><div class="checkbox"><label class="option"><input type="checkbox" value="3"/> c</label></div></fieldset></div>'
|
442
|
-
end
|
443
|
-
|
444
|
-
it "radio and checkbox inputs should handle :checked option" do
|
445
|
-
@f.input(:radio, :checked=>true).to_s.must_equal '<div class="radio"><input checked="checked" type="radio"/></div>'
|
446
|
-
@f.input(:radio, :checked=>false).to_s.must_equal '<div class="radio"><input type="radio"/></div>'
|
447
|
-
@f.input(:checkbox, :checked=>true).to_s.must_equal '<div class="checkbox"><input checked="checked" type="checkbox"/></div>'
|
448
|
-
@f.input(:checkbox, :checked=>false).to_s.must_equal '<div class="checkbox"><input type="checkbox"/></div>'
|
449
|
-
end
|
450
|
-
|
451
|
-
it "inputs should handle :autofocus option" do
|
452
|
-
@f.input(:text, :autofocus=>true).to_s.must_equal '<div class="form-group"><input autofocus="autofocus" class="form-control" type="text"/></div>'
|
453
|
-
@f.input(:text, :autofocus=>false).to_s.must_equal '<div class="form-group"><input class="form-control" type="text"/></div>'
|
454
|
-
end
|
455
|
-
|
456
|
-
it "inputs should handle :required option" do
|
457
|
-
@f.input(:text, :required=>true).to_s.must_equal '<div class="form-group"><input class="form-control" required="required" type="text"/></div>'
|
458
|
-
@f.input(:text, :required=>false).to_s.must_equal '<div class="form-group"><input class="form-control" type="text"/></div>'
|
459
|
-
end
|
460
|
-
|
461
|
-
it "inputs should handle :disabled option" do
|
462
|
-
@f.input(:text, :disabled=>true).to_s.must_equal '<div class="form-group"><input class="form-control" disabled="disabled" type="text"/></div>'
|
463
|
-
@f.input(:text, :disabled=>false).to_s.must_equal '<div class="form-group"><input class="form-control" type="text"/></div>'
|
464
|
-
end
|
465
|
-
|
466
|
-
it "inputs should not include options with nil values" do
|
467
|
-
@f.input(:text, :name=>nil).to_s.must_equal '<div class="form-group"><input class="form-control" type="text"/></div>'
|
468
|
-
@f.input(:textarea, :name=>nil).to_s.must_equal '<div class="form-group"><textarea class="form-control"></textarea></div>'
|
469
|
-
end
|
470
|
-
|
471
|
-
it "inputs should include options with false values" do
|
472
|
-
@f.input(:text, :name=>false).to_s.must_equal '<div class="form-group"><input class="form-control" name="false" type="text"/></div>'
|
473
|
-
end
|
474
|
-
|
475
|
-
it "should automatically create a label if a :label option is used" do
|
476
|
-
@f.input(:text, :label=>'Foo', :value=>'foo').to_s.must_equal '<div class="form-group"><label>Foo</label> <input class="form-control" type="text" value="foo"/></div>'
|
477
|
-
end
|
478
|
-
|
479
|
-
it "should set label attributes with :label_attr option" do
|
480
|
-
@f.input(:text, :label=>'Foo', :value=>'foo', :label_attr=>{:class=>'bar'}).to_s.must_equal '<div class="form-group"><label class="bar">Foo</label> <input class="form-control" type="text" value="foo"/></div>'
|
481
|
-
end
|
482
|
-
|
483
|
-
it "should handle implicit labels with checkboxes" do
|
484
|
-
@f.input(:checkbox, :label=>'Foo', :value=>'foo', :name=>'a').to_s.must_equal '<div class="checkbox"><label><input name="a" type="hidden" value="0"/><input name="a" type="checkbox" value="foo"/> Foo</label></div>'
|
485
|
-
end
|
486
|
-
|
487
|
-
it "should handle implicit labels with :label_position=>:after" do
|
488
|
-
@f.input(:text, :label=>'Foo', :value=>'foo', :label_position=>:after).to_s.must_equal '<div class="form-group"><input class="form-control" type="text" value="foo"/> <label>Foo</label></div>'
|
489
|
-
end
|
490
|
-
|
491
|
-
it "should handle implicit labels with checkboxes with :label_position=>:before" do
|
492
|
-
@f.input(:checkbox, :label=>'Foo', :value=>'foo', :name=>'a', :label_position=>:before).to_s.must_equal '<div class="checkbox"><label>Foo <input name="a" type="hidden" value="0"/><input name="a" type="checkbox" value="foo"/></label></div>'
|
493
|
-
end
|
494
|
-
|
495
|
-
it "should automatically note the input has errors if :error option is used" do
|
496
|
-
@f.input(:text, :error=>'Bad Stuff!', :value=>'foo').to_s.must_equal '<div class="form-group has-error"><input aria-invalid="true" class="form-control" type="text" value="foo"/><span class="help-block with-errors">Bad Stuff!</span></div>'
|
497
|
-
end
|
498
|
-
|
499
|
-
it "should add an error message after the label" do
|
500
|
-
@f.input(:text, :error=>'Bad Stuff!', :value=>'foo', :label=>"Foo").to_s.must_equal '<div class="form-group has-error"><label>Foo</label> <input aria-invalid="true" class="form-control" type="text" value="foo"/><span class="help-block with-errors">Bad Stuff!</span></div>'
|
501
|
-
end
|
502
|
-
|
503
|
-
it "should add to existing :class option if :error option is used" do
|
504
|
-
@f.input(:text, :error=>'Bad Stuff!', :class=>'bar', :value=>'foo').to_s.must_equal '<div class="form-group has-error"><input aria-invalid="true" class="form-control bar" type="text" value="foo"/><span class="help-block with-errors">Bad Stuff!</span></div>'
|
505
|
-
end
|
506
|
-
|
507
|
-
it "should respect :error_attr option for setting the attributes for the error message span" do
|
508
|
-
@f.input(:text, :error=>'Bad Stuff!', :value=>'foo', :error_attr=>{:class=>'foo'}).to_s.must_equal '<div class="form-group has-error"><input aria-invalid="true" class="form-control" type="text" value="foo"/><span class="foo help-block with-errors">Bad Stuff!</span></div>'
|
509
|
-
end
|
510
|
-
|
511
|
-
it "#open should return an opening tag" do
|
512
|
-
@f.open(:action=>'foo', :method=>'post').to_s.must_equal '<form action="foo" method="post">'
|
513
|
-
end
|
514
|
-
|
515
|
-
it "#close should return a closing tag" do
|
516
|
-
@f.close.to_s.must_equal '</form>'
|
517
|
-
end
|
518
|
-
|
519
|
-
it "#button should return a submit tag" do
|
520
|
-
@f.button.to_s.must_equal '<input class="btn btn-default" type="submit"/>'
|
521
|
-
end
|
522
|
-
|
523
|
-
it "#button should return a submit tag without label" do
|
524
|
-
@f.button(:label=>'foo').to_s.must_equal '<input class="btn btn-default" type="submit"/>'
|
525
|
-
end
|
526
|
-
|
527
|
-
it "#button should accept an options hash" do
|
528
|
-
@f.button(:name=>'foo', :value=>'bar').to_s.must_equal '<input class="btn btn-default" name="foo" type="submit" value="bar"/>'
|
529
|
-
end
|
530
|
-
|
531
|
-
it "#button should handle added classes" do
|
532
|
-
@f.button(:class=>'btn btn-primary').to_s.must_equal '<input class="btn btn-primary" type="submit"/>'
|
533
|
-
@f.button(:class=>'btn-danger').to_s.must_equal '<input class="btn btn-danger" type="submit"/>'
|
534
|
-
@f.button(:class=>'btn-success btn-lg').to_s.must_equal '<input class="btn btn-success btn-lg" type="submit"/>'
|
535
|
-
end
|
536
|
-
|
537
|
-
it "#button should accept a string to use as a value" do
|
538
|
-
@f.button('foo').to_s.must_equal '<input class="btn btn-default" type="submit" value="foo"/>'
|
539
|
-
end
|
540
|
-
|
541
|
-
it "#tag should accept children as procs" do
|
542
|
-
@f.tag(:div, {:class=>"foo"}, lambda{|t| t.tag(:input, :class=>t.attr[:class])}).to_s.must_equal '<div class="foo"><input class="form-control foo" type="text"/></div>'
|
543
|
-
end
|
544
|
-
|
545
|
-
it "#tag should accept children as methods" do
|
546
|
-
o = Object.new
|
547
|
-
def o.foo(t) t.tag(:input, :class=>t.attr[:class]) end
|
548
|
-
@f.tag(:div, {:class=>"foo"}, o.method(:foo)).to_s.must_equal '<div class="foo"><input class="form-control foo" type="text"/></div>'
|
549
|
-
end
|
550
|
-
|
551
|
-
it "should have an #inputs method for multiple inputs wrapped in a fieldset" do
|
552
|
-
@f.inputs([:textarea, :text]).to_s.must_equal '<fieldset class="inputs"><div class="form-group"><textarea class="form-control"></textarea></div><div class="form-group"><input class="form-control" type="text"/></div></fieldset>'
|
553
|
-
end
|
554
|
-
|
555
|
-
it "should have default #inputs method accept an :attr option" do
|
556
|
-
@f.inputs([:textarea, :text], :legend=>'Inputs', :attr=>{:class=>'foo', :bar=>'baz'}).to_s.must_equal '<fieldset bar="baz" class="foo inputs"><legend>Inputs</legend><div class="form-group"><textarea class="form-control"></textarea></div><div class="form-group"><input class="form-control" type="text"/></div></fieldset>'
|
557
|
-
end
|
558
|
-
|
559
|
-
it "should have default #inputs method accept a :legend option" do
|
560
|
-
@f.inputs([:textarea, :text], :legend=>'Inputs').to_s.must_equal '<fieldset class="inputs"><legend>Inputs</legend><div class="form-group"><textarea class="form-control"></textarea></div><div class="form-group"><input class="form-control" type="text"/></div></fieldset>'
|
561
|
-
end
|
562
|
-
|
563
|
-
it "should have default #inputs method accept a :legend_attr option" do
|
564
|
-
@f.inputs([:textarea, :text], :legend=>'Inputs', :legend_attr=>{:class=>'foo'}).to_s.must_equal '<fieldset class="inputs"><legend class="foo">Inputs</legend><div class="form-group"><textarea class="form-control"></textarea></div><div class="form-group"><input class="form-control" type="text"/></div></fieldset>'
|
565
|
-
end
|
566
|
-
|
567
|
-
it "should have an #inputs method take a block and yield to it" do
|
568
|
-
@f.inputs{@f.input(:textarea); @f.input(:text)}.to_s.must_equal '<fieldset class="inputs"><div class="form-group"><textarea class="form-control"></textarea></div><div class="form-group"><input class="form-control" type="text"/></div></fieldset>'
|
569
|
-
end
|
570
|
-
|
571
|
-
it "should have an #inputs method work with both args and block" do
|
572
|
-
@f.inputs([:textarea]){@f.input(:text)}.to_s.must_equal '<fieldset class="inputs"><div class="form-group"><textarea class="form-control"></textarea></div><div class="form-group"><input class="form-control" type="text"/></div></fieldset>'
|
573
|
-
end
|
574
|
-
|
575
|
-
it "should have an #inputs method support array arguments and creating inputs with the array as argument list" do
|
576
|
-
@f.inputs([[:textarea, {:name=>'foo'}], [:text, {:id=>'bar'}]]).to_s.must_equal '<fieldset class="inputs"><div class="form-group"><textarea class="form-control" name="foo"></textarea></div><div class="form-group"><input class="form-control" id="bar" type="text"/></div></fieldset>'
|
577
|
-
end
|
578
|
-
|
579
|
-
it "should have #inputs accept transformer options to modify the options inside the inputs" do
|
580
|
-
@f.inputs([:textarea, :text], :wrapper=>:div).to_s.must_equal '<fieldset class="inputs"><div><textarea class="form-control"></textarea></div><div><input class="form-control" type="text"/></div></fieldset>'
|
581
|
-
end
|
582
|
-
|
583
|
-
it "should have #inputs accept :nested_inputs_wrapper options to modify the :input_wrapper option inside the inputs" do
|
584
|
-
@f.inputs(:nested_inputs_wrapper=>:div){@f.inputs([:textarea, :text])}.to_s.must_equal '<fieldset class="inputs"><div><div class="form-group"><textarea class="form-control"></textarea></div><div class="form-group"><input class="form-control" type="text"/></div></div></fieldset>'
|
585
|
-
end
|
586
|
-
|
587
|
-
|
588
|
-
it "should escape tag content" do
|
589
|
-
@f.tag(:div, {}, ['<p></p>']).to_s.must_equal '<div><p></p></div>'
|
590
|
-
end
|
591
|
-
|
592
|
-
it "should not escape raw tag content using Forme::Raw" do
|
593
|
-
@f.tag(:div, {}, ['<p></p>'.dup.extend(Forme::Raw)]).to_s.must_equal '<div><p></p></div>'
|
594
|
-
end
|
595
|
-
|
596
|
-
it "should not escape raw tag content using Forme.raw" do
|
597
|
-
@f.tag(:div, {}, [Forme.raw('<p></p>')]).to_s.must_equal '<div><p></p></div>'
|
598
|
-
end
|
599
|
-
|
600
|
-
it "should not escape raw tag content using Form#raw" do
|
601
|
-
@f.tag(:div, {}, [@f.raw('<p></p>')]).to_s.must_equal '<div><p></p></div>'
|
602
|
-
end
|
603
|
-
|
604
|
-
it "should escape tag content in attribute values" do
|
605
|
-
@f.tag(:div, :foo=>'<p></p>').to_s.must_equal '<div foo="<p></p>"></div>'
|
606
|
-
end
|
607
|
-
|
608
|
-
it "should not escape raw tag content in attribute values" do
|
609
|
-
@f.tag(:div, :foo=>Forme.raw('<p></p>')).to_s.must_equal '<div foo="<p></p>"></div>'
|
610
|
-
end
|
611
|
-
|
612
|
-
it "should format dates, times, and datetimes in ISO format" do
|
613
|
-
@f.tag(:div, :foo=>Date.new(2011, 6, 5)).to_s.must_equal '<div foo="2011-06-05"></div>'
|
614
|
-
@f.tag(:div, :foo=>DateTime.new(2011, 6, 5, 4, 3, 2)).to_s.must_equal '<div foo="2011-06-05T04:03:02.000"></div>'
|
615
|
-
@f.tag(:div, :foo=>Time.utc(2011, 6, 5, 4, 3, 2)).to_s.must_equal '<div foo="2011-06-05T04:03:02.000"></div>'
|
616
|
-
end
|
617
|
-
|
618
|
-
it "should format bigdecimals in standard notation" do
|
619
|
-
@f.tag(:div, :foo=>BigDecimal('10000.010')).to_s.must_equal '<div foo="10000.01"></div>'
|
620
|
-
end
|
621
|
-
|
622
|
-
it "inputs should accept a :wrapper option to use a custom wrapper" do
|
623
|
-
@f.input(:text, :wrapper=>:li).to_s.must_equal '<li><input class="form-control" type="text"/></li>'
|
624
|
-
end
|
625
|
-
|
626
|
-
it "inputs should accept a :wrapper_attr option to use custom wrapper attributes" do
|
627
|
-
@f.input(:text, :wrapper=>:li, :wrapper_attr=>{:class=>"foo"}).to_s.must_equal '<li class="foo"><input class="form-control" type="text"/></li>'
|
628
|
-
end
|
629
|
-
|
630
|
-
it "inputs should accept a :help option to use custom helper text" do
|
631
|
-
@f.input(:text, :help=>"List type of foo").to_s.must_equal '<div class="form-group"><input class="form-control" type="text"/><span class="helper">List type of foo</span></div>'
|
632
|
-
end
|
633
|
-
|
634
|
-
it "inputs should accept a :helper_attr option for custom helper attributes" do
|
635
|
-
@f.input(:text, :help=>"List type of foo", :helper_attr=>{:class=>'foo'}).to_s.must_equal '<div class="form-group"><input class="form-control" type="text"/><span class="foo helper">List type of foo</span></div>'
|
636
|
-
end
|
637
|
-
|
638
|
-
it "inputs should have helper displayed inside wrapper, after error" do
|
639
|
-
@f.input(:text, :help=>"List type of foo", :error=>'bad', :wrapper=>:li).to_s.must_equal '<li class="has-error"><input aria-invalid="true" class="form-control" type="text"/><span class="help-block with-errors">bad</span><span class="helper">List type of foo</span></li>'
|
640
|
-
end
|
641
|
-
|
642
|
-
it "inputs should accept a :formatter option to use a custom formatter" do
|
643
|
-
@f.input(:text, :formatter=>:readonly, :value=>'1', :label=>'Foo').to_s.must_equal '<div class="form-group"><label>Foo</label> <span class="readonly-text">1</span></div>'
|
644
|
-
@f.input(:text, :formatter=>:default, :value=>'1', :label=>'Foo').to_s.must_equal '<div class="form-group"><label>Foo</label> <input class="form-control" type="text" value="1"/></div>'
|
645
|
-
@f.input(:text, :formatter=>:bs3_readonly, :value=>'1', :label=>'Foo').to_s.must_equal '<div class="form-group"><label>Foo</label> <input class="form-control" readonly="readonly" type="text" value="1"/></div>'
|
646
|
-
end
|
647
|
-
|
648
|
-
it "bs3_readonly formatter should disable checkbox, radio, select, and textarea inputs" do
|
649
|
-
@f.input(:checkbox, :formatter=>:bs3_readonly).to_s.must_equal '<div class="checkbox"><input disabled="disabled" type="checkbox"/></div>'
|
650
|
-
@f.input(:radio, :formatter=>:bs3_readonly).to_s.must_equal '<div class="radio"><input disabled="disabled" type="radio"/></div>'
|
651
|
-
@f.input(:select, :formatter=>:bs3_readonly).to_s.must_equal '<div class="form-group"><select class="form-control" disabled="disabled"></select></div>'
|
652
|
-
@f.input(:textarea, :formatter=>:bs3_readonly).to_s.must_equal '<div class="form-group"><textarea class="form-control" readonly="readonly"></textarea></div>'
|
653
|
-
end
|
654
|
-
|
655
|
-
it "inputs should accept a :labeler option to use a custom labeler" do
|
656
|
-
@f.input(:textarea, :labeler=>:explicit, :label=>'bar', :id=>:foo).to_s.must_equal '<div class="form-group"><label class="label-before" for="foo">bar</label><textarea class="form-control" id="foo"></textarea></div>'
|
657
|
-
end
|
658
|
-
|
659
|
-
it "inputs handle explicit labels with :label_position=>:after" do
|
660
|
-
@f.input(:textarea, :labeler=>:explicit, :label=>'bar', :id=>:foo, :label_position=>:after).to_s.must_equal '<div class="form-group"><textarea class="form-control" id="foo"></textarea><label class="label-after" for="foo">bar</label></div>'
|
661
|
-
end
|
662
|
-
|
663
|
-
it "should handle explicit labels with checkboxes" do
|
664
|
-
@f.input(:checkbox, :labeler=>:explicit, :label=>'Foo', :value=>'foo', :name=>'a', :id=>'bar').to_s.must_equal '<div class="checkbox"><input id="bar_hidden" name="a" type="hidden" value="0"/><input id="bar" name="a" type="checkbox" value="foo"/><label class="label-after" for="bar">Foo</label></div>'
|
665
|
-
end
|
666
|
-
|
667
|
-
it "should handle explicit labels with checkboxes with :label_position=>:before" do
|
668
|
-
@f.input(:checkbox, :labeler=>:explicit, :label=>'Foo', :value=>'foo', :name=>'a', :id=>'bar', :label_position=>:before).to_s.must_equal '<div class="checkbox"><label class="label-before" for="bar">Foo</label><input id="bar_hidden" name="a" type="hidden" value="0"/><input id="bar" name="a" type="checkbox" value="foo"/></div>'
|
669
|
-
end
|
670
|
-
|
671
|
-
it "inputs handle implicit labels or checkboxes without hidden fields with :label_position=>:before" do
|
672
|
-
@f.input(:checkbox, :label=>'Foo', :value=>'foo', :name=>'a', :id=>'bar', :label_position=>:before, :no_hidden=>true).to_s.must_equal '<div class="checkbox"><label for="bar">Foo <input id="bar" name="a" type="checkbox" value="foo"/></label></div>'
|
673
|
-
end
|
674
|
-
|
675
|
-
it "inputs should accept a :error_handler option to use a custom error_handler" do
|
676
|
-
@f.input(:textarea, :error_handler=>proc{|t, i| [t, "!!! #{i.opts[:error]}"]}, :error=>'bar', :id=>:foo).to_s.must_equal '<div class="form-group"><textarea aria-describedby="foo_error_message" aria-invalid="true" class="form-control" id="foo"></textarea>!!! bar</div>'
|
677
|
-
end
|
678
|
-
|
679
|
-
it "#inputs should accept a :inputs_wrapper option to use a custom inputs_wrapper" do
|
680
|
-
@f.inputs([:textarea], :inputs_wrapper=>:ol).to_s.must_equal '<ol><div class="form-group"><textarea class="form-control"></textarea></div></ol>'
|
681
|
-
@f.inputs([:textarea], :inputs_wrapper=>:bs3_table, :wrapper=>:trtd).to_s.must_equal '<table class="table table-bordered"><tr><td><textarea class="form-control"></textarea></td><td></td></tr></table>'
|
682
|
-
@f.inputs([:textarea], :inputs_wrapper=>:bs3_table, :wrapper=>:trtd, :legend=>'Foo', :labels=>['bar']).to_s.must_equal '<table class="table table-bordered"><caption>Foo</caption><tr><th>bar</th></tr><tr><td><textarea class="form-control"></textarea></td><td></td></tr></table>'
|
683
|
-
end
|
684
|
-
|
685
|
-
it "inputs should accept a :wrapper=>nil option to not use a wrapper" do
|
686
|
-
Forme::Form.new(:config=>:bs3,:wrapper=>:li).input(:text, :wrapper=>nil).to_s.must_equal '<input class="form-control" type="text"/>'
|
687
|
-
end
|
688
|
-
|
689
|
-
it "inputs should accept a :labeler=>nil option to not use a labeler" do
|
690
|
-
@f.input(:textarea, :labeler=>nil, :label=>'bar', :id=>:foo).to_s.must_equal '<div class="form-group"><textarea class="form-control" id="foo"></textarea></div>'
|
691
|
-
end
|
692
|
-
|
693
|
-
it "inputs should accept a :error_handler=>nil option to not use an error_handler" do
|
694
|
-
@f.input(:textarea, :error_handler=>nil, :error=>'bar', :id=>:foo).to_s.must_equal '<div class="form-group"><textarea aria-invalid="true" class="form-control" id="foo"></textarea></div>'
|
695
|
-
end
|
696
|
-
|
697
|
-
it "#inputs should accept a :inputs_wrapper=>nil option to not use an inputs_wrapper" do
|
698
|
-
@f.form{|f| f.inputs([:textarea], :inputs_wrapper=>nil)}.to_s.must_equal '<form><div class="form-group"><textarea class="form-control"></textarea></div></form>'
|
699
|
-
end
|
700
|
-
|
701
|
-
it "#inputs should treat a single hash argument as an options hash with no default inputs" do
|
702
|
-
@f.inputs(:inputs_wrapper=>:ol){@f.input(:textarea)}.to_s.must_equal '<ol><div class="form-group"><textarea class="form-control"></textarea></div></ol>'
|
703
|
-
end
|
704
|
-
|
705
|
-
it "should support setting defaults for inputs at the form level" do
|
706
|
-
f = Forme::Form.new(:config=>:bs3, :input_defaults=>{'text'=>{:size=>20}, 'textarea'=>{:cols=>80, :rows=>6}})
|
707
|
-
f.input(:text, :name=>"foo").to_s.must_equal '<div class="form-group"><input class="form-control" name="foo" size="20" type="text"/></div>'
|
708
|
-
f.input(:textarea, :name=>"foo").to_s.must_equal '<div class="form-group"><textarea class="form-control" cols="80" name="foo" rows="6"></textarea></div>'
|
709
|
-
end
|
710
|
-
|
711
|
-
it "should work with input_defaults with symbol keys using using inputs with symbol keys" do
|
712
|
-
f = Forme::Form.new(:config=>:bs3, :input_defaults=>{:text=>{:size=>20}, 'text'=>{:size=>30}})
|
713
|
-
f.input(:text, :name=>"foo").to_s.must_equal '<div class="form-group"><input class="form-control" name="foo" size="20" type="text"/></div>'
|
714
|
-
f.input('text', :name=>"foo").to_s.must_equal '<div class="form-group"><input class="form-control" name="foo" size="30" type="text"/></div>'
|
715
|
-
end
|
716
|
-
|
717
|
-
it "invalid custom transformers should raise an Error" do
|
718
|
-
proc{Forme::Form.new(:config=>:bs3, :wrapper=>Object.new).input(:text).to_s}.must_raise(Forme::Error)
|
719
|
-
proc{@f.input(:textarea, :wrapper=>Object.new).to_s}.must_raise(Forme::Error)
|
720
|
-
proc{@f.input(:textarea, :formatter=>nil).to_s}.must_raise(Forme::Error)
|
721
|
-
end
|
722
|
-
end
|