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.
data/Rakefile DELETED
@@ -1,82 +0,0 @@
1
- require "rake"
2
- require "rake/clean"
3
-
4
- NAME = 'forme'
5
- VERS = lambda do
6
- require File.expand_path("../lib/forme/version", __FILE__)
7
- Forme.version
8
- end
9
- CLEAN.include ["#{NAME}-*.gem", "rdoc", "coverage", '**/*.rbc']
10
-
11
- # Gem Packaging and Release
12
-
13
- desc "Packages #{NAME}"
14
- task :package=>[:clean] do |p|
15
- sh %{gem build #{NAME}.gemspec}
16
- end
17
-
18
- desc "Upload #{NAME} gem to rubygems"
19
- task :release=>[:package] do
20
- sh %{gem push ./#{NAME}-#{VERS.call}.gem}
21
- end
22
-
23
- ### RDoc
24
-
25
- RDOC_DEFAULT_OPTS = ["--line-numbers", "--inline-source", '--title', 'Forme']
26
-
27
- begin
28
- gem 'hanna-nouveau'
29
- RDOC_DEFAULT_OPTS.concat(['-f', 'hanna'])
30
- rescue Gem::LoadError
31
- end
32
-
33
- rdoc_task_class = begin
34
- require "rdoc/task"
35
- RDoc::Task
36
- rescue LoadError
37
- require "rake/rdoctask"
38
- Rake::RDocTask
39
- end
40
-
41
- RDOC_OPTS = RDOC_DEFAULT_OPTS + ['--main', 'README.rdoc']
42
-
43
- rdoc_task_class.new do |rdoc|
44
- rdoc.rdoc_dir = "rdoc"
45
- rdoc.options += RDOC_OPTS
46
- rdoc.rdoc_files.add %w"README.rdoc CHANGELOG MIT-LICENSE lib/**/*.rb"
47
- end
48
-
49
- ### Specs
50
-
51
- desc "Run specs"
52
- task :spec do
53
- sh "#{FileUtils::RUBY} #{'-w' if RUBY_VERSION >= '3'} spec/all.rb"
54
- end
55
- task :default => :spec
56
-
57
- desc "Run specs with coverage"
58
- task :spec_cov do
59
- ENV['COVERAGE'] = '1'
60
- sh "#{FileUtils::RUBY} spec/all.rb"
61
- end
62
-
63
- ### Other
64
-
65
- desc "Print #{NAME} version"
66
- task :version do
67
- puts VERS.call
68
- end
69
-
70
- desc "Check syntax of all .rb files"
71
- task :check_syntax do
72
- Dir['**/*.rb'].each{|file| print `#{ENV['RUBY'] || :ruby} -c #{file} | fgrep -v "Syntax OK"`}
73
- end
74
-
75
- desc "Start an IRB shell using the extension"
76
- task :irb do
77
- require 'rbconfig'
78
- ruby = ENV['RUBY'] || File.join(RbConfig::CONFIG['bindir'], RbConfig::CONFIG['ruby_install_name'])
79
- irb = ENV['IRB'] || File.join(RbConfig::CONFIG['bindir'], File.basename(ruby).sub('ruby', 'irb'))
80
- sh %{#{irb} -I lib -r forme}
81
- end
82
-
data/spec/all.rb DELETED
@@ -1,2 +0,0 @@
1
- $: << 'lib'
2
- Dir.new(File.dirname(__FILE__)).each{|f| require_relative f if f.end_with?('_spec.rb')}
@@ -1,358 +0,0 @@
1
- require_relative 'spec_helper'
2
- require_relative 'sequel_helper'
3
- require_relative '../lib/forme/bs3'
4
-
5
- describe "Forme Bootstrap3 (BS3) forms" do
6
- def sel(opts, s)
7
- opts.map{|o| "<option #{'selected="selected" ' if o == s}value=\"#{o}\">#{sprintf("%02i", o)}</option>"}.join
8
- end
9
-
10
- before do
11
- @f = Forme::Form.new(:config=>:bs3)
12
- @ab = Album[1]
13
- @b = Forme::Form.new(@ab, :config=>:bs3)
14
- @ac = Album[2]
15
- @c = Forme::Form.new(@ac, :config=>:bs3)
16
- end
17
-
18
- describe 'input[:text]' do
19
- it "should create a simple input[:text] tag" do
20
- @f.input(:text).to_s.must_equal '<div class="form-group"><input class="form-control" type="text"/></div>'
21
- end
22
-
23
- it "should create an input[:text] tag with a label when ':label => Name'" do
24
- @f.input(:text, :label=>"Name").to_s.must_equal '<div class="form-group"><label>Name</label> <input class="form-control" type="text"/></div>'
25
- end
26
-
27
- it "should create an input[:text] tag with a label when ':class => bar'" do
28
- @f.input(:text, :label=>"Name", :class=>'bar').to_s.must_equal '<div class="form-group"><label>Name</label> <input class="form-control bar" type="text"/></div>'
29
- end
30
-
31
- it "should create an input[:text] tag with a label when ':id => bar'" do
32
- @f.input(:text, :label=>"Name", :id=>'bar').to_s.must_equal '<div class="form-group"><label for="bar">Name</label> <input class="form-control" id="bar" type="text"/></div>'
33
- end
34
-
35
- it "should create an input[:text] tag with a label when ':id => bar' with an error" do
36
- @f.input(:text, :label=>"Name", :id=>'bar', :class=>'foo', :error=>'input-text-error').to_s.must_equal '<div class="form-group has-error"><label for="bar">Name</label> <input aria-describedby="bar_error_message" aria-invalid="true" class="form-control foo" id="bar" type="text"/><span class="help-block with-errors">input-text-error</span></div>'
37
- end
38
-
39
- describe 'from a Sequel model' do
40
- it "should create a correct input[:text] tag from Sequel model" do
41
- @c.input(:name).to_s.must_equal '<div class="form-group string"><label for="album_name">Name</label> <input class="form-control" id="album_name" maxlength="255" name="album[name]" type="text" value="c"/></div>'
42
- end
43
-
44
- it "should correctly handle an input[:text] tag from Sequel model with error" do
45
- @ac.errors.add(:name, 'name not valid')
46
- @c.input(:name).to_s.must_equal '<div class="form-group has-error string"><label for="album_name">Name</label> <input aria-describedby="album_name_error_message" aria-invalid="true" class="form-control" id="album_name" maxlength="255" name="album[name]" type="text" value="c"/><span class="help-block with-errors">name not valid</span></div>'
47
- end
48
- end
49
- end
50
-
51
- describe 'input[:password]' do
52
- it "should create a simple input[:password] tag" do
53
- @f.input(:password).to_s.must_equal '<div class="form-group"><input class="form-control" type="password"/></div>'
54
- end
55
-
56
- it "should create an input[:password] tag with a label when ':label => Name'" do
57
- @f.input(:password, :label=>"Name").to_s.must_equal '<div class="form-group"><label>Name</label> <input class="form-control" type="password"/></div>'
58
- end
59
-
60
- it "should create an input[:password] tag with a label when ':class => bar'" do
61
- @f.input(:password, :label=>"Name", :class=>'bar').to_s.must_equal '<div class="form-group"><label>Name</label> <input class="form-control bar" type="password"/></div>'
62
- end
63
-
64
- it "should create an input[:password] tag with a label when ':id => bar'" do
65
- @f.input(:password, :label=>"Name", :id=>'bar').to_s.must_equal '<div class="form-group"><label for="bar">Name</label> <input class="form-control" id="bar" type="password"/></div>'
66
- end
67
-
68
- it "should create an input[:password] tag with a label when ':id => bar' with an error" do
69
- @f.input(:password, :label=>"Name", :id=>'bar', :class=>'foo', :error=>'input-password-error').to_s.must_equal '<div class="form-group has-error"><label for="bar">Name</label> <input aria-describedby="bar_error_message" aria-invalid="true" class="form-control foo" id="bar" type="password"/><span class="help-block with-errors">input-password-error</span></div>'
70
- end
71
- end
72
-
73
- describe 'input[:email]' do
74
- it "should create a simple input[:email] tag" do
75
- @f.input(:email).to_s.must_equal '<div class="form-group"><input class="form-control" type="email"/></div>'
76
- end
77
-
78
- it "should create an input[:email] tag with a label when ':label => Name'" do
79
- @f.input(:email, :label=>"Name").to_s.must_equal '<div class="form-group"><label>Name</label> <input class="form-control" type="email"/></div>'
80
- end
81
-
82
- it "should create an input[:email] tag with a label when ':class => bar'" do
83
- @f.input(:email, :label=>"Name", :class=>'bar').to_s.must_equal '<div class="form-group"><label>Name</label> <input class="form-control bar" type="email"/></div>'
84
- end
85
-
86
- it "should create an input[:email] tag with a label when ':id => bar'" do
87
- @f.input(:email, :label=>"Name", :id=>'bar').to_s.must_equal '<div class="form-group"><label for="bar">Name</label> <input class="form-control" id="bar" type="email"/></div>'
88
- end
89
-
90
- it "should create an input[:email] tag with a label when ':id => bar' with an error" do
91
- @f.input(:email, :label=>"Name", :id=>'bar', :class=>'foo', :error=>'input-email-error').to_s.must_equal '<div class="form-group has-error"><label for="bar">Name</label> <input aria-describedby="bar_error_message" aria-invalid="true" class="form-control foo" id="bar" type="email"/><span class="help-block with-errors">input-email-error</span></div>'
92
- end
93
- end
94
-
95
- describe 'input[:file]' do
96
- it "should create a simple input[:file] tag" do
97
- @f.input(:file).to_s.must_equal '<div class="form-group"><input type="file"/></div>'
98
- end
99
-
100
- it "should create an input[:file] tag with a label when ':label => Name'" do
101
- @f.input(:file, :label=>"Name").to_s.must_equal '<div class="form-group"><label>Name</label> <input type="file"/></div>'
102
- end
103
-
104
- it "should create an input[:file] tag with a label when ':class => bar'" do
105
- @f.input(:file, :label=>"Name", :class=>'bar').to_s.must_equal '<div class="form-group"><label>Name</label> <input class="bar" type="file"/></div>'
106
- end
107
-
108
- it "should create an input[:file] tag with a label when ':id => bar'" do
109
- @f.input(:file, :label=>"Name", :id=>'bar').to_s.must_equal '<div class="form-group"><label for="bar">Name</label> <input id="bar" type="file"/></div>'
110
- end
111
-
112
- it "should create an input[:file] tag with a label when ':id => bar' with an error" do
113
- @f.input(:file, :label=>"Name", :id=>'bar', :class=>'foo', :error=>'input-file-error').to_s.must_equal '<div class="form-group has-error"><label for="bar">Name</label> <input aria-describedby="bar_error_message" aria-invalid="true" class="foo" id="bar" type="file"/><span class="help-block with-errors">input-file-error</span></div>'
114
- end
115
- end
116
-
117
- describe 'input[:submit]' do
118
- it "should create a simple input[:submit] tag" do
119
- @f.input(:submit).to_s.must_equal '<input class="btn btn-default" type="submit"/>'
120
- end
121
-
122
- it "should create an input[:submit] tag with the correct value" do
123
- @f.input(:submit, :value=>'Save').to_s.must_equal '<input class="btn btn-default" type="submit" value="Save"/>'
124
- end
125
-
126
- it "should create an input[:submit] tag with the correct class" do
127
- @f.input(:submit, :value=>'Save', :class=>'btn-primary').to_s.must_equal '<input class="btn btn-primary" type="submit" value="Save"/>'
128
- end
129
-
130
- it "should create an input[:submit] tag with the correct id" do
131
- @f.input(:submit, :value=>'Save', :id=>'foo').to_s.must_equal '<input class="btn btn-default" id="foo" type="submit" value="Save"/>'
132
- end
133
-
134
- it "should create an input[:submit] tag without error message " do
135
- @f.input(:submit, :value=>'Save', :id=>'foo', :error=>'error-message').to_s.must_equal '<input aria-describedby="foo_error_message" aria-invalid="true" class="btn btn-default" id="foo" type="submit" value="Save"/>'
136
- end
137
- end
138
-
139
- describe 'input[:reset]' do
140
- it "should create a simple input[:reset] tag" do
141
- @f.input(:reset).to_s.must_equal '<input class="btn btn-default" type="reset"/>'
142
- end
143
-
144
- it "should create an input[:reset] tag with the correct value" do
145
- @f.input(:reset, :value=>'Save').to_s.must_equal '<input class="btn btn-default" type="reset" value="Save"/>'
146
- end
147
-
148
- it "should create an input[:reset] tag with the correct class" do
149
- @f.input(:reset, :value=>'Save', :class=>'btn-primary').to_s.must_equal '<input class="btn btn-primary" type="reset" value="Save"/>'
150
- end
151
-
152
- it "should create an input[:reset] tag with the correct id" do
153
- @f.input(:reset, :value=>'Save', :id=>'foo').to_s.must_equal '<input class="btn btn-default" id="foo" type="reset" value="Save"/>'
154
- end
155
-
156
- it "should create an input[:reset] tag without error message " do
157
- @f.input(:reset, :value=>'Save', :id=>'foo', :error=>'error-message').to_s.must_equal '<input aria-describedby="foo_error_message" aria-invalid="true" class="btn btn-default" id="foo" type="reset" value="Save"/>'
158
- end
159
- end
160
-
161
- describe 'textarea' do
162
- it "should create a simple :textarea tag" do
163
- @f.input(:textarea).to_s.must_equal '<div class="form-group"><textarea class="form-control"></textarea></div>'
164
- end
165
-
166
- it "should create an :textarea tag with the correct value" do
167
- @f.input(:textarea, :value=>'Bio').to_s.must_equal '<div class="form-group"><textarea class="form-control">Bio</textarea></div>'
168
- end
169
-
170
- it "should create an :textarea tag with the correct class" do
171
- @f.input(:textarea, :class=>'foo').to_s.must_equal '<div class="form-group"><textarea class="form-control foo"></textarea></div>'
172
- end
173
-
174
- it "should create an :textarea tag with the correct id" do
175
- @f.input(:textarea, :id=>'bar').to_s.must_equal '<div class="form-group"><textarea class="form-control" id="bar"></textarea></div>'
176
- end
177
-
178
- it "should create a textarea tag without a .has-error and error message span when ':skip_error => true'" do
179
- @f.input(:textarea, :skip_error=>true).to_s.must_equal '<div class="form-group"><textarea class="form-control"></textarea></div>'
180
- end
181
-
182
- it "should create a textarea tag with .has-error and error message when ':error => is-a-string'" do
183
- @f.input(:textarea, :error=>'input-textarea-error').to_s.must_equal '<div class="form-group has-error"><textarea aria-invalid="true" class="form-control"></textarea><span class="help-block with-errors">input-textarea-error</span></div>'
184
- end
185
-
186
- describe 'from a Sequel model' do
187
- it "should create a correct input[:text] tag from Sequel model" do
188
- @c.input(:name, :as=>:textarea).to_s.must_equal '<div class="form-group string"><label for="album_name">Name</label> <textarea class="form-control" id="album_name" maxlength="255" name="album[name]">c</textarea></div>'
189
- end
190
-
191
- it "should correctly handle an input[:text] tag from Sequel model with error" do
192
- @ac.errors.add(:name, 'name not valid')
193
- @c.input(:name, :as=>:textarea).to_s.must_equal '<div class="form-group has-error string"><label for="album_name">Name</label> <textarea aria-describedby="album_name_error_message" aria-invalid="true" class="form-control" id="album_name" maxlength="255" name="album[name]">c</textarea><span class="help-block with-errors">name not valid</span></div>'
194
- end
195
- end
196
- end
197
-
198
- describe 'select' do
199
- it "should create a simple :select tag" do
200
- @f.input(:select).to_s.must_equal '<div class="form-group"><select class="form-control"></select></div>'
201
- end
202
-
203
- it "should create a simple :select tag with options" do
204
- @f.input(:select, :options=>[[:a, 1], [:b,2]]).to_s.must_equal '<div class="form-group"><select class="form-control"><option value="1">a</option><option value="2">b</option></select></div>'
205
- end
206
-
207
- it "should create a simple :select tag with options and the correct value" do
208
- @f.input(:select, :options=>[[:a, 1], [:b,2]], :value=>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></select></div>'
209
- end
210
-
211
- it "should support :add_blank option for select inputs" do
212
- @f.input(:select, :options=>[[:a, 1], [:b, 2]], :add_blank=>true, :value=>1).to_s.must_equal '<div class="form-group"><select class="form-control"><option value=""></option><option selected="selected" value="1">a</option><option value="2">b</option></select></div>'
213
- end
214
-
215
- it "should create an :select tag with the correct class" do
216
- @f.input(:select, :class=>'foo').to_s.must_equal '<div class="form-group"><select class="form-control foo"></select></div>'
217
- end
218
-
219
- it "should create an :select tag with the correct id" do
220
- @f.input(:select, :id=>'bar').to_s.must_equal '<div class="form-group"><select class="form-control" id="bar"></select></div>'
221
- end
222
-
223
- it "should create a select tag without .has-error and error message span when ':skip_error => true'" do
224
- @f.input(:select, :skip_error=>true).to_s.must_equal '<div class="form-group"><select class="form-control"></select></div>'
225
- end
226
-
227
- it "should create a select tag with .has-error and error message when ':error => is-a-string'" do
228
- @f.input(:select, :error=>'input-select-error').to_s.must_equal '<div class="form-group has-error"><select aria-invalid="true" class="form-control"></select><span class="help-block with-errors">input-select-error</span></div>'
229
- end
230
-
231
- it "should correctly handle a Sequel model output :as => :select" do
232
- @b.input(:artist, :as=>:select).to_s.must_equal '<div class="form-group many_to_one"><label for="album_artist_id">Artist</label> <select class="form-control" id="album_artist_id" name="album[artist_id]"><option value=""></option><option selected="selected" value="1">a</option><option value="2">d</option></select></div>'
233
- end
234
-
235
- it "should correctly handle a Sequel model output :as => :select with error" do
236
- @ac.errors.add(:artist, 'error message')
237
- @c.input(:artist, :as=>:select).to_s.must_equal '<div class="form-group has-error many_to_one"><label for="album_artist_id">Artist</label> <select aria-describedby="album_artist_id_error_message" aria-invalid="true" class="form-control" id="album_artist_id" name="album[artist_id]"><option value=""></option><option value="1">a</option><option selected="selected" value="2">d</option></select><span class="help-block with-errors">error message</span></div>'
238
- end
239
-
240
- describe 'from a Sequel model' do
241
- it "should correctly handle a boolean attribute from a Sequel model" do
242
- @c.input(:gold).to_s.must_equal '<div class="boolean form-group"><label for="album_gold">Gold</label> <select class="form-control" id="album_gold" name="album[gold]"><option value=""></option><option selected="selected" value="t">True</option><option value="f">False</option></select></div>'
243
- end
244
-
245
- it "should correctly handle a boolean attribute from a Sequel model with an error" do
246
- @ac.errors.add(:gold, 'error message')
247
- @c.input(:gold).to_s.must_equal '<div class="boolean form-group has-error"><label for="album_gold">Gold</label> <select aria-describedby="album_gold_error_message" aria-invalid="true" class="form-control" id="album_gold" name="album[gold]"><option value=""></option><option selected="selected" value="t">True</option><option value="f">False</option></select><span class="help-block with-errors">error message</span></div>'
248
- end
249
- end
250
- end
251
-
252
- describe 'input[:checkbox]' do
253
- it "should create a simple input[:checkbox] tag" do
254
- @f.input(:checkbox).to_s.must_equal '<div class="checkbox"><input type="checkbox"/></div>'
255
- end
256
-
257
- it "should create an input[:checkbox] tag with a label when ':label => Gold'" do
258
- @f.input(:checkbox, :label=>"Gold").to_s.must_equal '<div class="checkbox"><label><input type="checkbox"/> Gold</label></div>'
259
- end
260
-
261
- it "should create an input[:checkbox] tag with a label when ':class => bar'" do
262
- @f.input(:checkbox, :label=>"Gold", :class=>'bar').to_s.must_equal '<div class="checkbox"><label><input class="bar" type="checkbox"/> Gold</label></div>'
263
- end
264
-
265
- it "should create an input[:checkbox] tag with a label when ':id => bar'" do
266
- @f.input(:checkbox, :label=>"Gold", :id=>'bar').to_s.must_equal '<div class="checkbox"><label for="bar"><input id="bar" type="checkbox"/> Gold</label></div>'
267
- end
268
-
269
- it "should create an input[:checkbox] tag with a label when ':id => bar' with an error" do
270
- @f.input(:checkbox, :label=>"Gold", :id=>'bar', :class=>'foo', :error=>'input-checkbox-error').to_s.must_equal '<div class="has-error"><div class="checkbox"><label for="bar"><input aria-describedby="bar_error_message" aria-invalid="true" class="foo" id="bar" type="checkbox"/> Gold</label></div><span class="help-block with-errors">input-checkbox-error</span></div>'
271
- end
272
-
273
- describe 'from a Sequel model' do
274
- it "should correctly handle a boolean attribute ':as=>:checkbox'" do
275
- @c.input(:gold, :as=>:checkbox).to_s.must_equal '<div class="boolean checkbox"><label for="album_gold"><input id="album_gold_hidden" name="album[gold]" type="hidden" value="f"/><input checked="checked" id="album_gold" name="album[gold]" type="checkbox" value="t"/> Gold</label></div>'
276
- end
277
-
278
- it "should correctly handle a boolean attribute ':as=>:checkbox' with an error" do
279
- @ac.errors.add(:gold, 'error message')
280
- @c.input(:gold, :as=>:checkbox).to_s.must_equal '<div class="boolean has-error"><div class="checkbox"><label for="album_gold"><input id="album_gold_hidden" name="album[gold]" type="hidden" value="f"/><input aria-describedby="album_gold_error_message" aria-invalid="true" checked="checked" id="album_gold" name="album[gold]" type="checkbox" value="t"/> Gold</label></div><span class="help-block with-errors">error message</span></div>'
281
- end
282
- end
283
- end
284
-
285
-
286
- describe 'input[:radio]' do
287
- it "should create a simple input[:radio] tag" do
288
- @f.input(:radio).to_s.must_equal '<div class="radio"><input type="radio"/></div>'
289
- end
290
-
291
- it "should create an input[:radio] tag with a label when ':label => Gold'" do
292
- @f.input(:radio, :label=>"Gold").to_s.must_equal '<div class="radio"><label><input type="radio"/> Gold</label></div>'
293
- end
294
-
295
- it "should create an input[:radio] tag with a label when ':class => bar'" do
296
- @f.input(:radio, :label=>"Gold", :class=>'bar').to_s.must_equal '<div class="radio"><label><input class="bar" type="radio"/> Gold</label></div>'
297
- end
298
-
299
- it "should create an input[:radio] tag with a label when ':id => bar'" do
300
- @f.input(:radio, :label=>"Gold", :id=>'bar').to_s.must_equal '<div class="radio"><label for="bar"><input id="bar" type="radio"/> Gold</label></div>'
301
- end
302
-
303
- it "should create an input[:radio] tag with a label when ':id => bar' with an error" do
304
- @f.input(:radio, :label=>"Gold", :id=>'bar', :class=>'foo', :error=>'input-radio-error').to_s.must_equal '<div class="has-error"><div class="radio"><label for="bar"><input aria-describedby="bar_error_message" aria-invalid="true" class="foo" id="bar" type="radio"/> Gold</label></div><span class="help-block with-errors">input-radio-error</span></div>'
305
- end
306
-
307
- describe 'from a Sequel model' do
308
- it "should correctly handle a boolean attribute ':as=>:radio'" do
309
- @c.input(:gold, :as=>:radio).to_s.must_equal '<div class="boolean radioset"><label>Gold</label><div class="radio"><label class="option" for="album_gold_yes"><input checked="checked" id="album_gold_yes" name="album[gold]" type="radio" value="t"/> Yes</label></div><div class="radio"><label class="option" for="album_gold_no"><input id="album_gold_no" name="album[gold]" type="radio" value="f"/> No</label></div></div>'
310
- end
311
-
312
- it "should correctly handle a boolean attribute ':as=>:radio' with an error" do
313
- @ac.errors.add(:gold, 'error message')
314
- @c.input(:gold, :as=>:radio).to_s.must_equal '<div class="boolean radioset has-error"><label>Gold</label><div class="radio"><label class="option" for="album_gold_yes"><input checked="checked" id="album_gold_yes" name="album[gold]" type="radio" value="t"/> Yes</label></div><div class="radio"><label class="option" for="album_gold_no"><input id="album_gold_no" name="album[gold]" type="radio" value="f"/> No</label></div><span class="help-block with-errors">error message</span></div>'
315
- end
316
- end
317
- end
318
-
319
-
320
- it "should correctly handle a :checkboxset tag" do
321
- @f.input(:checkboxset, :options=>[[:a, 1], [:b,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 type="checkbox" value="2"/> b</label></div></div>'
322
- end
323
-
324
- it "should correctly handle a :checkboxset tag without options" do
325
- @f.input(:checkboxset, :options=>[]).to_s.must_equal '<div class="checkboxset"></div>'
326
- end
327
-
328
- it "should correctly handle a :checkboxset tag with an error - Alternative A: (see BS3 HTML reference)" do
329
- @f.input(:checkboxset, :options=>[[:a, 1], [:b,2]], :error=>'error message').to_s.must_equal '<div class="checkboxset has-error"><div class="checkbox"><label class="option"><input type="checkbox" value="1"/> a</label></div><div class="checkbox"><label class="option"><input type="checkbox" value="2"/> b</label></div><span class="help-block with-errors">error message</span></div>'
330
- end
331
-
332
- it "should correctly handle a :checkboxset tag with an error and label - Alternative A: (see BS3 HTML reference)" do
333
- @f.input(:checkboxset, :options=>[[:a, 1], [:b,2]], :error=>'error message', :label=>'CheckboxSet').to_s.must_equal '<div class="checkboxset has-error"><label>CheckboxSet</label><div class="checkbox"><label class="option"><input type="checkbox" value="1"/> a</label></div><div class="checkbox"><label class="option"><input type="checkbox" value="2"/> b</label></div><span class="help-block with-errors">error message</span></div>'
334
- end
335
-
336
- it "should correctly handle a :radioset tag" do
337
- @f.input(:radioset, :options=>[[:a, 1], [:b,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 type="radio" value="2"/> b</label></div></div>'
338
- end
339
-
340
- it "should correctly handle a :radioset tag without options" do
341
- @f.input(:radioset, :options=>[]).to_s.must_equal '<div class="radioset"></div>'
342
- end
343
-
344
- it "should correctly handle a :radioset tag with an error - Alternative A: (see BS3 HTML reference)" do
345
- @f.input(:radioset, :options=>[[:a, 1], [:b,2]], :error=>'error message').to_s.must_equal '<div class="radioset has-error"><div class="radio"><label class="option"><input type="radio" value="1"/> a</label></div><div class="radio"><label class="option"><input type="radio" value="2"/> b</label></div><span class="help-block with-errors">error message</span></div>'
346
- end
347
-
348
- it "should correctly handle a :radioset tag with an error and label - Alternative A: (see BS3 HTML reference)" do
349
- @f.input(:radioset, :options=>[[:a, 1], [:b,2]], :error=>'error message', :label=>'RadioSet').to_s.must_equal '<div class="radioset has-error"><label>RadioSet</label><div class="radio"><label class="option"><input type="radio" value="1"/> a</label></div><div class="radio"><label class="option"><input type="radio" value="2"/> b</label></div><span class="help-block with-errors">error message</span></div>'
350
- end
351
-
352
- it "should use a set of radio buttons for many_to_one associations with :as=>:radio option" do
353
- @b.input(:artist, :as=>:radio).to_s.must_equal '<div class="many_to_one radioset"><label>Artist</label><div class="radio"><label class="option" for="album_artist_id_1"><input checked="checked" id="album_artist_id_1" name="album[artist_id]" type="radio" value="1"/> a</label></div><div class="radio"><label class="option" for="album_artist_id_2"><input id="album_artist_id_2" name="album[artist_id]" type="radio" value="2"/> d</label></div></div>'
354
- @b.input(:artist, :as=>:radio, :wrapper=>nil).to_s.must_equal '<label>Artist</label><div class="radio"><label class="option" for="album_artist_id_1"><input checked="checked" id="album_artist_id_1" name="album[artist_id]" type="radio" value="1"/> a</label></div><div class="radio"><label class="option" for="album_artist_id_2"><input id="album_artist_id_2" name="album[artist_id]" type="radio" value="2"/> d</label></div>'
355
- @c.input(:artist, :as=>:radio).to_s.must_equal '<div class="many_to_one radioset"><label>Artist</label><div class="radio"><label class="option" for="album_artist_id_1"><input id="album_artist_id_1" name="album[artist_id]" type="radio" value="1"/> a</label></div><div class="radio"><label class="option" for="album_artist_id_2"><input checked="checked" id="album_artist_id_2" name="album[artist_id]" type="radio" value="2"/> d</label></div></div>'
356
- @c.input(:artist, :as=>:radio, :wrapper=>:div).to_s.must_equal '<div class="many_to_one radioset"><label>Artist</label><div class="radio"><label class="option" for="album_artist_id_1"><input id="album_artist_id_1" name="album[artist_id]" type="radio" value="1"/> a</label></div><div class="radio"><label class="option" for="album_artist_id_2"><input checked="checked" id="album_artist_id_2" name="album[artist_id]" type="radio" value="2"/> d</label></div></div>'
357
- end
358
- end