formtastic 0.9.7 → 0.9.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -13,68 +13,76 @@ describe 'datetime input' do
13
13
  @new_post.should_receive(:created_at=).any_number_of_times
14
14
  @bob.should_receive(:created_at=).any_number_of_times
15
15
  @new_post.should_receive(:title=).any_number_of_times # Macro stuff forces this.
16
-
17
- semantic_form_for(@new_post) do |builder|
18
- concat(builder.input(:publish_at, :as => :datetime))
19
- end
20
16
  end
21
-
22
- it_should_have_input_wrapper_with_class("datetime")
23
- it_should_have_input_wrapper_with_id("post_publish_at_input")
24
- it_should_have_a_nested_fieldset
25
- it_should_apply_error_logic_for_input_type(:datetime)
26
17
 
27
- it 'should have a legend containing the label text inside the fieldset' do
28
- output_buffer.should have_tag('form li.datetime fieldset legend', /Publish at/)
29
- end
30
-
31
- it 'should have an ordered list of five items inside the fieldset' do
32
- output_buffer.should have_tag('form li.datetime fieldset ol')
33
- output_buffer.should have_tag('form li.datetime fieldset ol li', :count => 5)
34
- end
35
-
36
- it 'should have five labels for year, month, day, hour and minute' do
37
- output_buffer.should have_tag('form li.datetime fieldset ol li label', :count => 5)
38
- output_buffer.should have_tag('form li.datetime fieldset ol li label', /year/i)
39
- output_buffer.should have_tag('form li.datetime fieldset ol li label', /month/i)
40
- output_buffer.should have_tag('form li.datetime fieldset ol li label', /day/i)
41
- output_buffer.should have_tag('form li.datetime fieldset ol li label', /hour/i)
42
- output_buffer.should have_tag('form li.datetime fieldset ol li label', /minute/i)
43
- end
44
-
45
- it 'should have five selects for year, month, day, hour and minute' do
46
- output_buffer.should have_tag('form li.datetime fieldset ol li select', :count => 5)
47
- end
48
-
49
- it 'should generate a sanitized label and matching ids for attribute' do
50
- semantic_form_for(@new_post) do |builder|
51
- builder.semantic_fields_for(@bob, :index => 10) do |bob_builder|
52
- concat(bob_builder.input(:created_at, :as => :datetime))
18
+ describe "general" do
19
+
20
+ before do
21
+ output_buffer.replace ''
22
+ semantic_form_for(@new_post) do |builder|
23
+ concat(builder.input(:publish_at, :as => :datetime))
53
24
  end
54
25
  end
55
-
56
- 1.upto(5) do |i|
57
- output_buffer.should have_tag("form li fieldset ol li label[@for='post_author_10_created_at_#{i}i']")
58
- output_buffer.should have_tag("form li fieldset ol li #post_author_10_created_at_#{i}i")
26
+
27
+ it_should_have_input_wrapper_with_class("datetime")
28
+ it_should_have_input_wrapper_with_id("post_publish_at_input")
29
+ it_should_have_a_nested_fieldset
30
+ it_should_apply_error_logic_for_input_type(:datetime)
31
+
32
+ it 'should have a legend and label with the label text inside the fieldset' do
33
+ output_buffer.should have_tag('form li.datetime fieldset legend.label label', /Publish at/)
34
+ end
35
+
36
+ it 'should associate the legend label with the first select' do
37
+ output_buffer.should have_tag('form li.datetime fieldset legend.label label[@for="post_publish_at_1i"]')
38
+ end
39
+
40
+ it 'should have an ordered list of five items inside the fieldset' do
41
+ output_buffer.should have_tag('form li.datetime fieldset ol')
42
+ output_buffer.should have_tag('form li.datetime fieldset ol li', :count => 5)
43
+ end
44
+
45
+ it 'should have five labels for year, month, day, hour and minute' do
46
+ output_buffer.should have_tag('form li.datetime fieldset ol li label', :count => 5)
47
+ output_buffer.should have_tag('form li.datetime fieldset ol li label', /year/i)
48
+ output_buffer.should have_tag('form li.datetime fieldset ol li label', /month/i)
49
+ output_buffer.should have_tag('form li.datetime fieldset ol li label', /day/i)
50
+ output_buffer.should have_tag('form li.datetime fieldset ol li label', /hour/i)
51
+ output_buffer.should have_tag('form li.datetime fieldset ol li label', /minute/i)
52
+ end
53
+
54
+ it 'should have five selects for year, month, day, hour and minute' do
55
+ output_buffer.should have_tag('form li.datetime fieldset ol li select', :count => 5)
56
+ end
57
+
58
+ it 'should generate a sanitized label and matching ids for attribute' do
59
+ semantic_form_for(@new_post) do |builder|
60
+ builder.semantic_fields_for(@bob, :index => 10) do |bob_builder|
61
+ concat(bob_builder.input(:created_at, :as => :datetime))
62
+ end
63
+ end
64
+
65
+ 1.upto(5) do |i|
66
+ output_buffer.should have_tag("form li fieldset ol li label[@for='post_author_10_created_at_#{i}i']")
67
+ output_buffer.should have_tag("form li fieldset ol li #post_author_10_created_at_#{i}i")
68
+ end
59
69
  end
60
70
  end
61
71
 
62
- it_should_select_existing_datetime_else_current(:year, :month, :day, :hour, :minute, :second)
63
- it_should_select_explicit_default_value_if_set(:year, :month, :day, :hour, :minute, :second)
64
-
65
72
  describe 'when :discard_input => true is set' do
66
73
  it 'should use default attribute value when it is not nil' do
67
74
  @new_post.stub!(:publish_at).and_return(Date.new(2007,12,27))
68
75
  semantic_form_for(@new_post) do |builder|
69
76
  concat(builder.input(:publish_at, :as => :datetime, :discard_day => true))
70
77
  end
71
-
78
+
72
79
  output_buffer.should have_tag("form li input[@type='hidden'][@value='27']")
73
80
  end
74
81
  end
75
-
82
+
76
83
  describe 'inputs order' do
77
84
  it 'should have a default' do
85
+ output_buffer.replace ''
78
86
  semantic_form_for(@new_post) do |builder|
79
87
  self.should_receive(:select_year).once.ordered.and_return('')
80
88
  self.should_receive(:select_month).once.ordered.and_return('')
@@ -82,18 +90,21 @@ describe 'datetime input' do
82
90
  builder.input(:publish_at, :as => :datetime)
83
91
  end
84
92
  end
85
-
93
+
86
94
  it 'should be specified with :order option' do
87
95
  ::I18n.backend.store_translations 'en', :date => { :order => [:month, :year, :day] }
96
+ output_buffer.replace ''
88
97
  semantic_form_for(@new_post) do |builder|
89
98
  self.should_receive(:select_month).once.ordered.and_return('')
90
99
  self.should_receive(:select_year).once.ordered.and_return('')
91
100
  self.should_receive(:select_day).once.ordered.and_return('')
92
101
  builder.input(:publish_at, :as => :datetime)
102
+ ::I18n.backend.store_translations 'en', :date => nil
93
103
  end
94
104
  end
95
-
105
+
96
106
  it 'should be changed through I18n' do
107
+ output_buffer.replace ''
97
108
  semantic_form_for(@new_post) do |builder|
98
109
  self.should_receive(:select_day).once.ordered.and_return('')
99
110
  self.should_receive(:select_month).once.ordered.and_return('')
@@ -102,25 +113,26 @@ describe 'datetime input' do
102
113
  end
103
114
  end
104
115
  end
105
-
116
+
106
117
  describe 'when the locale changes the label text' do
107
118
  before do
108
119
  ::I18n.backend.store_translations 'en', :datetime => {:prompts => {
109
120
  :year => 'The Year', :month => 'The Month', :day => 'The Day',
110
121
  :hour => 'The Hour', :minute => 'The Minute'
111
122
  }}
123
+ output_buffer.replace ''
112
124
  semantic_form_for(@new_post) do |builder|
113
125
  concat(builder.input(:publish_at, :as => :datetime))
114
126
  end
115
127
  end
116
-
128
+
117
129
  after do
118
130
  ::I18n.backend.store_translations 'en', :formtastic => {
119
131
  :year => nil, :month => nil, :day => nil,
120
132
  :hour => nil, :minute => nil
121
133
  }
122
134
  end
123
-
135
+
124
136
  it 'should have translated labels for year, month, day, hour and minute' do
125
137
  output_buffer.should have_tag('form li.datetime fieldset ol li label', /The Year/)
126
138
  output_buffer.should have_tag('form li.datetime fieldset ol li label', /The Month/)
@@ -129,7 +141,7 @@ describe 'datetime input' do
129
141
  output_buffer.should have_tag('form li.datetime fieldset ol li label', /The Minute/)
130
142
  end
131
143
  end
132
-
144
+
133
145
  describe 'when no object is given' do
134
146
  before(:each) do
135
147
  output_buffer.replace ''
@@ -137,19 +149,130 @@ describe 'datetime input' do
137
149
  concat(builder.input(:publish_at, :as => :datetime))
138
150
  end
139
151
  end
140
-
152
+
141
153
  it 'should have fieldset with legend - classified as a label' do
142
154
  output_buffer.should have_tag('form li.datetime fieldset legend.label', /Publish at/)
143
155
  end
144
-
156
+
145
157
  it 'should have labels for each input' do
146
158
  output_buffer.should have_tag('form li.datetime fieldset ol li label', :count => 5)
147
159
  end
148
-
160
+
149
161
  it 'should have selects for each inputs' do
150
162
  output_buffer.should have_tag('form li.datetime fieldset ol li select', :count => 5)
151
163
  end
152
164
  end
153
-
165
+
166
+ describe ':selected option' do
167
+
168
+ describe "when the object has a value" do
169
+ it "should select the object value (ignoring :selected)" do
170
+ output_buffer.replace ''
171
+ @new_post.stub!(:created_at => Time.mktime(2012))
172
+ with_deprecation_silenced do
173
+ semantic_form_for(@new_post) do |builder|
174
+ concat(builder.input(:created_at, :as => :datetime, :selected => Time.mktime(1999)))
175
+ end
176
+ end
177
+ output_buffer.should have_tag("form li ol li select#post_created_at_1i option[@selected]", :count => 1)
178
+ output_buffer.should have_tag("form li ol li select#post_created_at_1i option[@value='2012'][@selected]", :count => 1)
179
+ end
180
+ end
181
+
182
+ describe 'when the object has no value' do
183
+ it "should select the :selected if provided as a Date" do
184
+ output_buffer.replace ''
185
+ @new_post.stub!(:created_at => nil)
186
+ with_deprecation_silenced do
187
+ semantic_form_for(@new_post) do |builder|
188
+ concat(builder.input(:created_at, :as => :datetime, :selected => Date.new(1999)))
189
+ end
190
+ end
191
+ output_buffer.should have_tag("form li ol li select#post_created_at_1i option[@selected]", :count => 1)
192
+ output_buffer.should have_tag("form li ol li select#post_created_at_1i option[@value='1999'][@selected]", :count => 1)
193
+ end
194
+
195
+ it "should select the :selected if provided as a Time" do
196
+ output_buffer.replace ''
197
+ @new_post.stub!(:created_at => nil)
198
+ with_deprecation_silenced do
199
+ semantic_form_for(@new_post) do |builder|
200
+ concat(builder.input(:created_at, :as => :datetime, :selected => Time.mktime(1999)))
201
+ end
202
+ end
203
+ output_buffer.should have_tag("form li ol li select#post_created_at_1i option[@selected]", :count => 1)
204
+ output_buffer.should have_tag("form li ol li select#post_created_at_1i option[@value='1999'][@selected]", :count => 1)
205
+ end
206
+
207
+ it "should not select an option if the :selected is provided as nil" do
208
+ output_buffer.replace ''
209
+ @new_post.stub!(:created_at => nil)
210
+ with_deprecation_silenced do
211
+ semantic_form_for(@new_post) do |builder|
212
+ concat(builder.input(:created_at, :as => :datetime, :selected => nil))
213
+ end
214
+ end
215
+ output_buffer.should_not have_tag("form li ol li select#post_created_at_1i option[@selected]")
216
+ end
217
+
218
+ it "should select Time.now if a :selected is not provided" do
219
+ output_buffer.replace ''
220
+ @new_post.stub!(:created_at => nil)
221
+ semantic_form_for(@new_post) do |builder|
222
+ concat(builder.input(:created_at, :as => :datetime))
223
+ end
224
+ output_buffer.should have_tag("form li ol li select#post_created_at_1i option[@selected]", :count => 1)
225
+ output_buffer.should have_tag("form li ol li select#post_created_at_1i option[@value='#{Time.now.year}'][@selected]", :count => 1)
226
+
227
+ end
228
+ end
229
+
230
+ it 'should warn about :selected deprecation' do
231
+ with_deprecation_silenced do
232
+ ::ActiveSupport::Deprecation.should_receive(:warn).any_number_of_times
233
+ semantic_form_for(@new_post) do |builder|
234
+ concat(builder.input(:created_at, :as => :date, :selected => Time.mktime(1999)))
235
+ end
236
+ end
237
+ end
238
+
239
+ end
240
+
241
+ describe ':labels option' do
242
+ fields = [:year, :month, :day, :hour, :minute]
243
+ fields.each do |field|
244
+ it "should replace the #{field} label with the specified text if :labels[:#{field}] is set" do
245
+ output_buffer.replace ''
246
+ semantic_form_for(@new_post) do |builder|
247
+ concat(builder.input(:created_at, :as => :datetime, :labels => { field => "another #{field} label" }))
248
+ end
249
+ output_buffer.should have_tag('form li.datetime fieldset ol li label', :count => fields.length)
250
+ fields.each do |f|
251
+ output_buffer.should have_tag('form li.datetime fieldset ol li label', f == field ? /another #{f} label/i : /#{f}/i)
252
+ end
253
+ end
254
+
255
+ it "should not display the label for the #{field} field when :labels[:#{field}] is blank" do
256
+ output_buffer.replace ''
257
+ semantic_form_for(@new_post) do |builder|
258
+ concat(builder.input(:created_at, :as => :datetime, :labels => { field => "" }))
259
+ end
260
+ output_buffer.should have_tag('form li.datetime fieldset ol li label', :count => fields.length-1)
261
+ fields.each do |f|
262
+ output_buffer.should have_tag('form li.datetime fieldset ol li label', /#{f}/i) unless field == f
263
+ end
264
+ end
265
+ end
266
+ end
267
+
268
+ it 'should warn about :selected deprecation' do
269
+ with_deprecation_silenced do
270
+ ::ActiveSupport::Deprecation.should_receive(:warn).any_number_of_times
271
+ semantic_form_for(@new_post) do |builder|
272
+ concat(builder.input(:created_at, :as => :datetime, :selected => Time.mktime(1999)))
273
+ end
274
+ end
275
+ end
276
+
154
277
  end
155
278
 
@@ -47,6 +47,15 @@ describe 'hidden input' do
47
47
  output_buffer.should_not have_tag("form li p.inline-errors")
48
48
  output_buffer.should_not have_tag("form li ul.errors")
49
49
  end
50
+
51
+ it "should not render inline hints" do
52
+ semantic_form_for(@new_post) do |builder|
53
+ concat(builder.input(:secret, :as => :hidden, :hint => "all your base are belong to use"))
54
+ end
55
+
56
+ output_buffer.should_not have_tag("form li p.inline-hints")
57
+ output_buffer.should_not have_tag("form li ul.hints")
58
+ end
50
59
 
51
60
  end
52
61
 
@@ -23,10 +23,13 @@ describe 'radio input' do
23
23
  it_should_apply_error_logic_for_input_type(:radio)
24
24
  it_should_use_the_collection_when_provided(:radio, 'input')
25
25
 
26
+ it 'should generate a legend containing a label with text for the input' do
27
+ output_buffer.should have_tag('form li fieldset legend.label label')
28
+ output_buffer.should have_tag('form li fieldset legend.label label', /Author/)
29
+ end
26
30
 
27
- it 'should generate a legend - classified as a label - containing label text for the input' do
28
- output_buffer.should have_tag('form li fieldset legend.label')
29
- output_buffer.should have_tag('form li fieldset legend.label', /Author/)
31
+ it 'should not link the label within the legend to any input' do
32
+ output_buffer.should_not have_tag('form li fieldset legend label[@for^="post_author_id_"]')
30
33
  end
31
34
 
32
35
  it 'should generate an ordered list with a list item for each choice' do
@@ -117,9 +120,11 @@ describe 'radio input' do
117
120
  describe "no selected items" do
118
121
  before do
119
122
  @new_post.stub!(:author_ids).and_return(nil)
120
-
121
- semantic_form_for(@new_post) do |builder|
122
- concat(builder.input(:authors, :as => :radio, :selected => nil))
123
+
124
+ with_deprecation_silenced do
125
+ semantic_form_for(@new_post) do |builder|
126
+ concat(builder.input(:authors, :as => :radio, :selected => nil))
127
+ end
123
128
  end
124
129
  end
125
130
 
@@ -131,9 +136,10 @@ describe 'radio input' do
131
136
  describe "single selected item" do
132
137
  before do
133
138
  @new_post.stub!(:author_ids).and_return(nil)
134
-
135
- semantic_form_for(@new_post) do |builder|
136
- concat(builder.input(:authors, :as => :radio, :selected => @fred.id))
139
+ with_deprecation_silenced do
140
+ semantic_form_for(@new_post) do |builder|
141
+ concat(builder.input(:authors, :as => :radio, :selected => @fred.id))
142
+ end
137
143
  end
138
144
  end
139
145
 
@@ -47,6 +47,49 @@ describe 'select input' do
47
47
  end
48
48
  end
49
49
 
50
+ describe 'for boolean columns' do
51
+ describe 'default formtastic locale' do
52
+ before do
53
+ # Note: Works, but something like Formtastic.root.join(...) would probably be "safer".
54
+ ::I18n.load_path = [File.join(File.dirname(__FILE__), *%w[.. .. lib locale en.yml])]
55
+ ::I18n.backend.send(:init_translations)
56
+
57
+ semantic_form_for(@new_post) do |builder|
58
+ concat(builder.input(:published, :as => :select))
59
+ end
60
+ end
61
+
62
+ after do
63
+ ::I18n.backend.store_translations :en, {}
64
+ end
65
+
66
+ it 'should render a select with at least options: true/false' do
67
+ output_buffer.should have_tag("form li select option[@value='true']", /^Yes$/)
68
+ output_buffer.should have_tag("form li select option[@value='false']", /^No$/)
69
+ end
70
+ end
71
+
72
+ describe 'custom locale' do
73
+ before do
74
+ @boolean_select_labels = {:yes => 'Yep', :no => 'Nope'}
75
+ ::I18n.backend.store_translations :en, :formtastic => @boolean_select_labels
76
+
77
+ semantic_form_for(@new_post) do |builder|
78
+ concat(builder.input(:published, :as => :select))
79
+ end
80
+ end
81
+
82
+ after do
83
+ ::I18n.backend.store_translations :en, {}
84
+ end
85
+
86
+ it 'should render a select with at least options: true/false' do
87
+ output_buffer.should have_tag("form li select option[@value='true']", /#{@boolean_select_labels[:yes]}/)
88
+ output_buffer.should have_tag("form li select option[@value='false']", /#{@boolean_select_labels[:no]}/)
89
+ end
90
+ end
91
+ end
92
+
50
93
  describe 'for a belongs_to association' do
51
94
  before do
52
95
  semantic_form_for(@new_post) do |builder|
@@ -106,6 +149,20 @@ describe 'select input' do
106
149
 
107
150
  output_buffer.should have_tag('form li select#post_author_status_id')
108
151
  end
152
+
153
+ it 'should use the "class_name" option' do
154
+ @new_post.stub!(:status).and_return(@bob)
155
+ @new_post.stub!(:author_status_id).and_return(@bob.id)
156
+
157
+ ::Post.stub!(:reflect_on_association).with(:status).and_return(
158
+ mock('reflection', :options => {:class_name => 'AuthorStatus'}, :klass => ::Author, :macro => :belongs_to))
159
+
160
+ semantic_form_for(@new_post) do |builder|
161
+ concat(builder.input(:status, :as => :select))
162
+ end
163
+
164
+ output_buffer.should have_tag('form li select#post_author_status_id')
165
+ end
109
166
  end
110
167
 
111
168
  describe "for a belongs_to association with :group_by => :author" do
@@ -256,7 +313,7 @@ describe 'select input' do
256
313
  output_buffer.should have_tag('form li select option[@selected]', :count => 1)
257
314
  end
258
315
  end
259
-
316
+
260
317
  describe 'when :prompt => "choose something" is set' do
261
318
  before do
262
319
  @new_post.stub!(:author_id).and_return(nil)
@@ -297,7 +354,7 @@ describe 'select input' do
297
354
  end
298
355
  end
299
356
  end
300
-
357
+
301
358
  describe 'when :selected is set' do
302
359
  before do
303
360
  @output_buffer = ''
@@ -306,11 +363,13 @@ describe 'select input' do
306
363
  describe "no selected items" do
307
364
  before do
308
365
  @new_post.stub!(:author_id).and_return(nil)
309
- semantic_form_for(@new_post) do |builder|
310
- concat(builder.input(:author, :as => :select, :selected => nil))
366
+ with_deprecation_silenced do
367
+ semantic_form_for(@new_post) do |builder|
368
+ concat(builder.input(:author, :as => :select, :selected => nil))
369
+ end
311
370
  end
312
371
  end
313
-
372
+
314
373
  it 'should not have any selected item(s)' do
315
374
  output_buffer.should_not have_tag("form li select option[@selected='selected']")
316
375
  end
@@ -319,8 +378,10 @@ describe 'select input' do
319
378
  describe "single selected item" do
320
379
  before do
321
380
  @new_post.stub!(:author_id).and_return(nil)
322
- semantic_form_for(@new_post) do |builder|
323
- concat(builder.input(:author, :as => :select, :selected => @bob.id))
381
+ with_deprecation_silenced do
382
+ semantic_form_for(@new_post) do |builder|
383
+ concat(builder.input(:author, :as => :select, :selected => @bob.id))
384
+ end
324
385
  end
325
386
  end
326
387
 
@@ -337,16 +398,17 @@ describe 'select input' do
337
398
  before do
338
399
  @new_post.stub!(:author_ids).and_return(nil)
339
400
 
340
- semantic_form_for(@new_post) do |builder|
341
- concat(builder.input(:authors, :as => :select, :selected => [@bob.id, @fred.id], :multiple => false))
401
+ with_deprecation_silenced do
402
+ semantic_form_for(@new_post) do |builder|
403
+ concat(builder.input(:authors, :as => :select, :selected => [@bob.id, @fred.id], :multiple => false))
404
+ end
342
405
  end
343
406
  end
344
407
 
345
408
  it "should only select the first value" do
346
409
  output_buffer.should have_tag("form li select option[@selected='selected']", :count => 1)
347
- # FIXME: Not supported by Nokogiri.
348
- # output_buffer.should have_tag("form li select:not([@multiple]) option[@selected='selected']", /bob/i)
349
- # output_buffer.should have_tag("form li select:not([@multiple]) option[@selected='selected'][@value='#{@bob.id}']")
410
+ output_buffer.should have_tag("form li select:not([@multiple]) option[@selected='selected']", /bob/i)
411
+ output_buffer.should have_tag("form li select:not([@multiple]) option[@selected='selected'][@value='#{@bob.id}']")
350
412
  end
351
413
  end
352
414
 
@@ -354,8 +416,10 @@ describe 'select input' do
354
416
  before do
355
417
  @new_post.stub!(:author_ids).and_return(nil)
356
418
 
357
- semantic_form_for(@new_post) do |builder|
358
- concat(builder.input(:authors, :as => :select, :selected => [@bob.id, @fred.id]))
419
+ with_deprecation_silenced do
420
+ semantic_form_for(@new_post) do |builder|
421
+ concat(builder.input(:authors, :as => :select, :selected => [@bob.id, @fred.id]))
422
+ end
359
423
  end
360
424
  end
361
425
 
@@ -371,89 +435,55 @@ describe 'select input' do
371
435
  end
372
436
 
373
437
  end
374
-
375
- describe 'boolean select' do
376
- describe 'default formtastic locale' do
438
+
439
+ describe "enum" do
440
+ before do
441
+ @output_buffer = ''
442
+ @some_meta_descriptions = ["One", "Two", "Three"]
443
+ @new_post.stub!(:meta_description).any_number_of_times
444
+ end
445
+
446
+ describe ":as is not set" do
377
447
  before do
378
- # Note: Works, but something like Formtastic.root.join(...) would probably be "safer".
379
- ::I18n.load_path = [File.join(File.dirname(__FILE__), *%w[.. .. lib locale en.yml])]
380
- ::I18n.backend.send(:init_translations)
381
-
382
448
  semantic_form_for(@new_post) do |builder|
383
- concat(builder.input(:published, :as => :select))
449
+ concat(builder.input(:meta_description, :collection => @some_meta_descriptions))
450
+ end
451
+ semantic_form_for(:project, :url => 'http://test.host') do |builder|
452
+ concat(builder.input(:meta_description, :collection => @some_meta_descriptions))
384
453
  end
385
454
  end
386
-
387
- after do
388
- ::I18n.backend.store_translations :en, {}
389
- end
390
-
391
- it 'should render a select with at least options: true/false' do
392
- output_buffer.should have_tag("form li select option[@value='true']", /^Yes$/)
393
- output_buffer.should have_tag("form li select option[@value='false']", /^No$/)
455
+
456
+ it "should render a select field" do
457
+ output_buffer.should have_tag("form li select", :count => 2)
394
458
  end
395
459
  end
396
-
397
- describe 'custom locale' do
460
+
461
+ describe ":as is set" do
398
462
  before do
399
- @boolean_select_labels = {:yes => 'Yep', :no => 'Nope'}
400
- ::I18n.backend.store_translations :en, :formtastic => @boolean_select_labels
401
-
463
+ # Should not be a case, but just checking :as got highest priority in setting input type.
402
464
  semantic_form_for(@new_post) do |builder|
403
- concat(builder.input(:published, :as => :select))
465
+ concat(builder.input(:meta_description, :as => :string, :collection => @some_meta_descriptions))
466
+ end
467
+ semantic_form_for(:project, :url => 'http://test.host') do |builder|
468
+ concat(builder.input(:meta_description, :as => :string, :collection => @some_meta_descriptions))
404
469
  end
405
470
  end
406
-
407
- after do
408
- ::I18n.backend.store_translations :en, {}
409
- end
410
-
411
- it 'should render a select with at least options: true/false' do
412
- output_buffer.should have_tag("form li select option[@value='true']", /#{@boolean_select_labels[:yes]}/)
413
- output_buffer.should have_tag("form li select option[@value='false']", /#{@boolean_select_labels[:no]}/)
471
+
472
+ it "should render a text field" do
473
+ output_buffer.should have_tag("form li input[@type='text']", :count => 2)
414
474
  end
415
475
  end
416
476
  end
417
-
418
- describe "enums" do
419
- describe ":collection is set" do
420
- before do
421
- @output_buffer = ''
422
- @some_meta_descriptions = ["One", "Two", "Three"]
423
- @new_post.stub!(:meta_description).any_number_of_times
424
- end
425
-
426
- describe ":as is not set" do
427
- before do
428
- semantic_form_for(@new_post) do |builder|
429
- concat(builder.input(:meta_description, :collection => @some_meta_descriptions))
430
- end
431
- semantic_form_for(:project, :url => 'http://test.host') do |builder|
432
- concat(builder.input(:meta_description, :collection => @some_meta_descriptions))
433
- end
434
- end
435
-
436
- it "should render a select field" do
437
- output_buffer.should have_tag("form li select", :count => 2)
438
- end
439
- end
440
-
441
- describe ":as is set" do
442
- before do
443
- # Should not be a case, but just checking :as got highest priority in setting input type.
444
- semantic_form_for(@new_post) do |builder|
445
- concat(builder.input(:meta_description, :as => :string, :collection => @some_meta_descriptions))
446
- end
447
- semantic_form_for(:project, :url => 'http://test.host') do |builder|
448
- concat(builder.input(:meta_description, :as => :string, :collection => @some_meta_descriptions))
449
- end
450
- end
451
-
452
- it "should render a text field" do
453
- output_buffer.should have_tag("form li input[@type='text']", :count => 2)
454
- end
477
+
478
+ it 'should warn about :selected deprecation' do
479
+ with_deprecation_silenced do
480
+ ::ActiveSupport::Deprecation.should_receive(:warn).any_number_of_times
481
+ semantic_form_for(@new_post) do |builder|
482
+ concat(builder.input(:author_id, :as => :select, :selected => @bob.id))
455
483
  end
456
484
  end
457
485
  end
458
-
486
+
487
+
488
+
459
489
  end