formtastic 0.9.7 → 0.9.8

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.
@@ -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