formtastic 2.0.2 → 2.1.0.beta1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +4 -1
- data/Appraisals +11 -0
- data/CHANGELOG +2 -2
- data/Gemfile +0 -2
- data/README.textile +183 -151
- data/Rakefile +9 -5
- data/app/assets/stylesheets/formtastic.css +16 -3
- data/formtastic.gemspec +6 -2
- data/gemfiles/rails-3.0.gemfile +7 -0
- data/gemfiles/rails-3.1.gemfile +7 -0
- data/gemfiles/rails-3.2.gemfile +7 -0
- data/lib/formtastic.rb +10 -2
- data/lib/formtastic/actions.rb +11 -0
- data/lib/formtastic/actions/base.rb +156 -0
- data/lib/formtastic/actions/button_action.rb +72 -0
- data/lib/formtastic/actions/buttonish.rb +17 -0
- data/lib/formtastic/actions/input_action.rb +68 -0
- data/lib/formtastic/actions/link_action.rb +87 -0
- data/lib/formtastic/engine.rb +5 -1
- data/lib/formtastic/form_builder.rb +3 -0
- data/lib/formtastic/helpers.rb +2 -1
- data/lib/formtastic/helpers/action_helper.rb +109 -0
- data/lib/formtastic/helpers/actions_helper.rb +168 -0
- data/lib/formtastic/helpers/buttons_helper.rb +22 -9
- data/lib/formtastic/helpers/errors_helper.rb +0 -54
- data/lib/formtastic/helpers/fieldset_wrapper.rb +10 -5
- data/lib/formtastic/helpers/form_helper.rb +2 -2
- data/lib/formtastic/helpers/input_helper.rb +1 -10
- data/lib/formtastic/helpers/inputs_helper.rb +6 -3
- data/lib/formtastic/i18n.rb +3 -2
- data/lib/formtastic/inputs/base.rb +11 -3
- data/lib/formtastic/inputs/base/choices.rb +6 -1
- data/lib/formtastic/inputs/base/collections.rb +36 -13
- data/lib/formtastic/inputs/base/grouped_collections.rb +1 -1
- data/lib/formtastic/inputs/base/numeric.rb +50 -0
- data/lib/formtastic/inputs/base/options.rb +1 -1
- data/lib/formtastic/inputs/base/placeholder.rb +17 -0
- data/lib/formtastic/inputs/base/stringish.rb +2 -7
- data/lib/formtastic/inputs/base/timeish.rb +21 -5
- data/lib/formtastic/inputs/base/validations.rb +1 -1
- data/lib/formtastic/inputs/base/wrapping.rb +10 -3
- data/lib/formtastic/inputs/boolean_input.rb +10 -2
- data/lib/formtastic/inputs/check_boxes_input.rb +18 -9
- data/lib/formtastic/inputs/country_input.rb +2 -2
- data/lib/formtastic/inputs/date_input.rb +19 -1
- data/lib/formtastic/inputs/datetime_input.rb +1 -1
- data/lib/formtastic/inputs/email_input.rb +2 -1
- data/lib/formtastic/inputs/file_input.rb +1 -1
- data/lib/formtastic/inputs/hidden_input.rb +1 -1
- data/lib/formtastic/inputs/number_input.rb +6 -36
- data/lib/formtastic/inputs/password_input.rb +2 -1
- data/lib/formtastic/inputs/phone_input.rb +3 -2
- data/lib/formtastic/inputs/radio_input.rb +1 -1
- data/lib/formtastic/inputs/range_input.rb +8 -32
- data/lib/formtastic/inputs/search_input.rb +2 -1
- data/lib/formtastic/inputs/select_input.rb +56 -28
- data/lib/formtastic/inputs/string_input.rb +3 -1
- data/lib/formtastic/inputs/text_input.rb +5 -4
- data/lib/formtastic/inputs/time_input.rb +4 -8
- data/lib/formtastic/inputs/time_zone_input.rb +1 -1
- data/lib/formtastic/inputs/url_input.rb +2 -1
- data/lib/formtastic/localized_string.rb +6 -94
- data/lib/formtastic/localizer.rb +110 -0
- data/lib/formtastic/version.rb +1 -1
- data/lib/generators/formtastic/form/form_generator.rb +105 -0
- data/lib/generators/templates/_form.html.erb +2 -2
- data/lib/generators/templates/_form.html.haml +4 -4
- data/lib/generators/templates/_form.html.slim +2 -2
- data/lib/generators/templates/formtastic.rb +4 -0
- data/lib/locale/en.yml +2 -0
- data/sample/basic_inputs.html +22 -0
- data/spec/actions/button_action_spec.rb +63 -0
- data/spec/actions/generic_action_spec.rb +484 -0
- data/spec/actions/input_action_spec.rb +59 -0
- data/spec/actions/link_action_spec.rb +92 -0
- data/spec/builder/semantic_fields_for_spec.rb +14 -0
- data/spec/generators/formtastic/form/form_generator_spec.rb +118 -0
- data/spec/generators/formtastic/install/install_generator_spec.rb +47 -0
- data/spec/helpers/action_helper_spec.rb +365 -0
- data/spec/helpers/actions_helper_spec.rb +143 -0
- data/spec/helpers/buttons_helper_spec.rb +39 -23
- data/spec/helpers/commit_button_helper_spec.rb +153 -93
- data/spec/helpers/inputs_helper_spec.rb +14 -0
- data/spec/i18n_spec.rb +11 -0
- data/spec/inputs/boolean_input_spec.rb +31 -2
- data/spec/inputs/check_boxes_input_spec.rb +29 -1
- data/spec/inputs/date_input_spec.rb +95 -0
- data/spec/inputs/datetime_input_spec.rb +49 -0
- data/spec/inputs/email_input_spec.rb +28 -0
- data/spec/inputs/file_input_spec.rb +28 -0
- data/spec/inputs/hidden_input_spec.rb +28 -0
- data/spec/inputs/include_blank_spec.rb +53 -45
- data/spec/inputs/number_input_spec.rb +34 -4
- data/spec/inputs/password_input_spec.rb +28 -0
- data/spec/inputs/phone_input_spec.rb +28 -0
- data/spec/inputs/placeholder_spec.rb +10 -10
- data/spec/inputs/radio_input_spec.rb +51 -6
- data/spec/inputs/range_input_spec.rb +30 -2
- data/spec/inputs/search_input_spec.rb +27 -0
- data/spec/inputs/select_input_spec.rb +52 -6
- data/spec/inputs/string_input_spec.rb +28 -0
- data/spec/inputs/text_input_spec.rb +27 -0
- data/spec/inputs/time_input_spec.rb +67 -1
- data/spec/inputs/time_zone_input_spec.rb +28 -0
- data/spec/inputs/url_input_spec.rb +28 -0
- data/spec/inputs/with_options_spec.rb +43 -0
- data/spec/spec_helper.rb +22 -6
- data/spec/support/custom_macros.rb +6 -134
- data/spec/support/test_environment.rb +0 -1
- metadata +104 -17
- data/lib/formtastic/helpers/semantic_form_helper.rb +0 -11
- data/lib/formtastic/inputs/numeric_input.rb +0 -21
- data/lib/formtastic/railtie.rb +0 -12
- data/lib/formtastic/semantic_form_builder.rb +0 -11
- data/spec/builder/errors_spec.rb +0 -203
- data/spec/inputs/numeric_input_spec.rb +0 -41
metadata
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: formtastic
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
5
|
-
prerelease:
|
|
4
|
+
hash: 62196465
|
|
5
|
+
prerelease: 6
|
|
6
6
|
segments:
|
|
7
7
|
- 2
|
|
8
|
+
- 1
|
|
8
9
|
- 0
|
|
9
|
-
-
|
|
10
|
-
|
|
10
|
+
- beta
|
|
11
|
+
- 1
|
|
12
|
+
version: 2.1.0.beta1
|
|
11
13
|
platform: ruby
|
|
12
14
|
authors:
|
|
13
15
|
- Justin French
|
|
@@ -15,11 +17,11 @@ autorequire:
|
|
|
15
17
|
bindir: bin
|
|
16
18
|
cert_chain: []
|
|
17
19
|
|
|
18
|
-
date:
|
|
20
|
+
date: 2012-01-15 00:00:00 +11:00
|
|
19
21
|
default_executable:
|
|
20
22
|
dependencies:
|
|
21
23
|
- !ruby/object:Gem::Dependency
|
|
22
|
-
name:
|
|
24
|
+
name: actionpack
|
|
23
25
|
prerelease: false
|
|
24
26
|
requirement: &id001 !ruby/object:Gem::Requirement
|
|
25
27
|
none: false
|
|
@@ -41,11 +43,12 @@ dependencies:
|
|
|
41
43
|
requirements:
|
|
42
44
|
- - ~>
|
|
43
45
|
- !ruby/object:Gem::Version
|
|
44
|
-
hash:
|
|
46
|
+
hash: 47
|
|
45
47
|
segments:
|
|
46
48
|
- 2
|
|
47
|
-
-
|
|
48
|
-
|
|
49
|
+
- 8
|
|
50
|
+
- 0
|
|
51
|
+
version: 2.8.0
|
|
49
52
|
type: :development
|
|
50
53
|
version_requirements: *id002
|
|
51
54
|
- !ruby/object:Gem::Dependency
|
|
@@ -139,6 +142,64 @@ dependencies:
|
|
|
139
142
|
version: "0"
|
|
140
143
|
type: :development
|
|
141
144
|
version_requirements: *id008
|
|
145
|
+
- !ruby/object:Gem::Dependency
|
|
146
|
+
name: tzinfo
|
|
147
|
+
prerelease: false
|
|
148
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
|
149
|
+
none: false
|
|
150
|
+
requirements:
|
|
151
|
+
- - ">="
|
|
152
|
+
- !ruby/object:Gem::Version
|
|
153
|
+
hash: 3
|
|
154
|
+
segments:
|
|
155
|
+
- 0
|
|
156
|
+
version: "0"
|
|
157
|
+
type: :development
|
|
158
|
+
version_requirements: *id009
|
|
159
|
+
- !ruby/object:Gem::Dependency
|
|
160
|
+
name: ammeter
|
|
161
|
+
prerelease: false
|
|
162
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
|
163
|
+
none: false
|
|
164
|
+
requirements:
|
|
165
|
+
- - ~>
|
|
166
|
+
- !ruby/object:Gem::Version
|
|
167
|
+
hash: 19
|
|
168
|
+
segments:
|
|
169
|
+
- 0
|
|
170
|
+
- 2
|
|
171
|
+
- 2
|
|
172
|
+
version: 0.2.2
|
|
173
|
+
type: :development
|
|
174
|
+
version_requirements: *id010
|
|
175
|
+
- !ruby/object:Gem::Dependency
|
|
176
|
+
name: appraisal
|
|
177
|
+
prerelease: false
|
|
178
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
|
179
|
+
none: false
|
|
180
|
+
requirements:
|
|
181
|
+
- - ">="
|
|
182
|
+
- !ruby/object:Gem::Version
|
|
183
|
+
hash: 3
|
|
184
|
+
segments:
|
|
185
|
+
- 0
|
|
186
|
+
version: "0"
|
|
187
|
+
type: :development
|
|
188
|
+
version_requirements: *id011
|
|
189
|
+
- !ruby/object:Gem::Dependency
|
|
190
|
+
name: rake
|
|
191
|
+
prerelease: false
|
|
192
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
|
193
|
+
none: false
|
|
194
|
+
requirements:
|
|
195
|
+
- - ">="
|
|
196
|
+
- !ruby/object:Gem::Version
|
|
197
|
+
hash: 3
|
|
198
|
+
segments:
|
|
199
|
+
- 0
|
|
200
|
+
version: "0"
|
|
201
|
+
type: :development
|
|
202
|
+
version_requirements: *id012
|
|
142
203
|
description: A Rails form builder plugin/gem with semantically rich and accessible markup
|
|
143
204
|
email:
|
|
144
205
|
- justin@indent.com.au
|
|
@@ -153,6 +214,7 @@ files:
|
|
|
153
214
|
- .rspec
|
|
154
215
|
- .travis.yml
|
|
155
216
|
- .yardopts
|
|
217
|
+
- Appraisals
|
|
156
218
|
- CHANGELOG
|
|
157
219
|
- Gemfile
|
|
158
220
|
- MIT-LICENSE
|
|
@@ -163,10 +225,21 @@ files:
|
|
|
163
225
|
- app/assets/stylesheets/formtastic_ie6.css
|
|
164
226
|
- app/assets/stylesheets/formtastic_ie7.css
|
|
165
227
|
- formtastic.gemspec
|
|
228
|
+
- gemfiles/rails-3.0.gemfile
|
|
229
|
+
- gemfiles/rails-3.1.gemfile
|
|
230
|
+
- gemfiles/rails-3.2.gemfile
|
|
166
231
|
- lib/formtastic.rb
|
|
232
|
+
- lib/formtastic/actions.rb
|
|
233
|
+
- lib/formtastic/actions/base.rb
|
|
234
|
+
- lib/formtastic/actions/button_action.rb
|
|
235
|
+
- lib/formtastic/actions/buttonish.rb
|
|
236
|
+
- lib/formtastic/actions/input_action.rb
|
|
237
|
+
- lib/formtastic/actions/link_action.rb
|
|
167
238
|
- lib/formtastic/engine.rb
|
|
168
239
|
- lib/formtastic/form_builder.rb
|
|
169
240
|
- lib/formtastic/helpers.rb
|
|
241
|
+
- lib/formtastic/helpers/action_helper.rb
|
|
242
|
+
- lib/formtastic/helpers/actions_helper.rb
|
|
170
243
|
- lib/formtastic/helpers/buttons_helper.rb
|
|
171
244
|
- lib/formtastic/helpers/errors_helper.rb
|
|
172
245
|
- lib/formtastic/helpers/fieldset_wrapper.rb
|
|
@@ -175,7 +248,6 @@ files:
|
|
|
175
248
|
- lib/formtastic/helpers/input_helper.rb
|
|
176
249
|
- lib/formtastic/helpers/inputs_helper.rb
|
|
177
250
|
- lib/formtastic/helpers/reflection.rb
|
|
178
|
-
- lib/formtastic/helpers/semantic_form_helper.rb
|
|
179
251
|
- lib/formtastic/html_attributes.rb
|
|
180
252
|
- lib/formtastic/i18n.rb
|
|
181
253
|
- lib/formtastic/inputs.rb
|
|
@@ -191,7 +263,9 @@ files:
|
|
|
191
263
|
- lib/formtastic/inputs/base/html.rb
|
|
192
264
|
- lib/formtastic/inputs/base/labelling.rb
|
|
193
265
|
- lib/formtastic/inputs/base/naming.rb
|
|
266
|
+
- lib/formtastic/inputs/base/numeric.rb
|
|
194
267
|
- lib/formtastic/inputs/base/options.rb
|
|
268
|
+
- lib/formtastic/inputs/base/placeholder.rb
|
|
195
269
|
- lib/formtastic/inputs/base/stringish.rb
|
|
196
270
|
- lib/formtastic/inputs/base/timeish.rb
|
|
197
271
|
- lib/formtastic/inputs/base/validations.rb
|
|
@@ -205,7 +279,6 @@ files:
|
|
|
205
279
|
- lib/formtastic/inputs/file_input.rb
|
|
206
280
|
- lib/formtastic/inputs/hidden_input.rb
|
|
207
281
|
- lib/formtastic/inputs/number_input.rb
|
|
208
|
-
- lib/formtastic/inputs/numeric_input.rb
|
|
209
282
|
- lib/formtastic/inputs/password_input.rb
|
|
210
283
|
- lib/formtastic/inputs/phone_input.rb
|
|
211
284
|
- lib/formtastic/inputs/radio_input.rb
|
|
@@ -218,10 +291,10 @@ files:
|
|
|
218
291
|
- lib/formtastic/inputs/time_zone_input.rb
|
|
219
292
|
- lib/formtastic/inputs/url_input.rb
|
|
220
293
|
- lib/formtastic/localized_string.rb
|
|
221
|
-
- lib/formtastic/
|
|
222
|
-
- lib/formtastic/semantic_form_builder.rb
|
|
294
|
+
- lib/formtastic/localizer.rb
|
|
223
295
|
- lib/formtastic/util.rb
|
|
224
296
|
- lib/formtastic/version.rb
|
|
297
|
+
- lib/generators/formtastic/form/form_generator.rb
|
|
225
298
|
- lib/generators/formtastic/install/install_generator.rb
|
|
226
299
|
- lib/generators/templates/_form.html.erb
|
|
227
300
|
- lib/generators/templates/_form.html.haml
|
|
@@ -232,10 +305,17 @@ files:
|
|
|
232
305
|
- sample/basic_inputs.html
|
|
233
306
|
- sample/config.ru
|
|
234
307
|
- sample/index.html
|
|
308
|
+
- spec/actions/button_action_spec.rb
|
|
309
|
+
- spec/actions/generic_action_spec.rb
|
|
310
|
+
- spec/actions/input_action_spec.rb
|
|
311
|
+
- spec/actions/link_action_spec.rb
|
|
235
312
|
- spec/builder/custom_builder_spec.rb
|
|
236
313
|
- spec/builder/error_proc_spec.rb
|
|
237
|
-
- spec/builder/errors_spec.rb
|
|
238
314
|
- spec/builder/semantic_fields_for_spec.rb
|
|
315
|
+
- spec/generators/formtastic/form/form_generator_spec.rb
|
|
316
|
+
- spec/generators/formtastic/install/install_generator_spec.rb
|
|
317
|
+
- spec/helpers/action_helper_spec.rb
|
|
318
|
+
- spec/helpers/actions_helper_spec.rb
|
|
239
319
|
- spec/helpers/buttons_helper_spec.rb
|
|
240
320
|
- spec/helpers/commit_button_helper_spec.rb
|
|
241
321
|
- spec/helpers/form_helper_spec.rb
|
|
@@ -256,7 +336,6 @@ files:
|
|
|
256
336
|
- spec/inputs/include_blank_spec.rb
|
|
257
337
|
- spec/inputs/label_spec.rb
|
|
258
338
|
- spec/inputs/number_input_spec.rb
|
|
259
|
-
- spec/inputs/numeric_input_spec.rb
|
|
260
339
|
- spec/inputs/password_input_spec.rb
|
|
261
340
|
- spec/inputs/phone_input_spec.rb
|
|
262
341
|
- spec/inputs/placeholder_spec.rb
|
|
@@ -269,6 +348,7 @@ files:
|
|
|
269
348
|
- spec/inputs/time_input_spec.rb
|
|
270
349
|
- spec/inputs/time_zone_input_spec.rb
|
|
271
350
|
- spec/inputs/url_input_spec.rb
|
|
351
|
+
- spec/inputs/with_options_spec.rb
|
|
272
352
|
- spec/spec.opts
|
|
273
353
|
- spec/spec_helper.rb
|
|
274
354
|
- spec/support/custom_macros.rb
|
|
@@ -310,10 +390,17 @@ signing_key:
|
|
|
310
390
|
specification_version: 3
|
|
311
391
|
summary: A Rails form builder plugin/gem with semantically rich and accessible markup
|
|
312
392
|
test_files:
|
|
393
|
+
- spec/actions/button_action_spec.rb
|
|
394
|
+
- spec/actions/generic_action_spec.rb
|
|
395
|
+
- spec/actions/input_action_spec.rb
|
|
396
|
+
- spec/actions/link_action_spec.rb
|
|
313
397
|
- spec/builder/custom_builder_spec.rb
|
|
314
398
|
- spec/builder/error_proc_spec.rb
|
|
315
|
-
- spec/builder/errors_spec.rb
|
|
316
399
|
- spec/builder/semantic_fields_for_spec.rb
|
|
400
|
+
- spec/generators/formtastic/form/form_generator_spec.rb
|
|
401
|
+
- spec/generators/formtastic/install/install_generator_spec.rb
|
|
402
|
+
- spec/helpers/action_helper_spec.rb
|
|
403
|
+
- spec/helpers/actions_helper_spec.rb
|
|
317
404
|
- spec/helpers/buttons_helper_spec.rb
|
|
318
405
|
- spec/helpers/commit_button_helper_spec.rb
|
|
319
406
|
- spec/helpers/form_helper_spec.rb
|
|
@@ -334,7 +421,6 @@ test_files:
|
|
|
334
421
|
- spec/inputs/include_blank_spec.rb
|
|
335
422
|
- spec/inputs/label_spec.rb
|
|
336
423
|
- spec/inputs/number_input_spec.rb
|
|
337
|
-
- spec/inputs/numeric_input_spec.rb
|
|
338
424
|
- spec/inputs/password_input_spec.rb
|
|
339
425
|
- spec/inputs/phone_input_spec.rb
|
|
340
426
|
- spec/inputs/placeholder_spec.rb
|
|
@@ -347,6 +433,7 @@ test_files:
|
|
|
347
433
|
- spec/inputs/time_input_spec.rb
|
|
348
434
|
- spec/inputs/time_zone_input_spec.rb
|
|
349
435
|
- spec/inputs/url_input_spec.rb
|
|
436
|
+
- spec/inputs/with_options_spec.rb
|
|
350
437
|
- spec/spec.opts
|
|
351
438
|
- spec/spec_helper.rb
|
|
352
439
|
- spec/support/custom_macros.rb
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
module Formtastic
|
|
2
|
-
# Quick hack/shim for anything expecting the old SemanticFormHelper module.
|
|
3
|
-
# TODO remove from 2.0 with a helpful upgrade path/warning.
|
|
4
|
-
# @private
|
|
5
|
-
module SemanticFormHelper
|
|
6
|
-
include Formtastic::Helpers::FormHelper
|
|
7
|
-
@@builder = Formtastic::Helpers::FormHelper.builder
|
|
8
|
-
@@default_form_class = Formtastic::Helpers::FormHelper.default_form_class
|
|
9
|
-
mattr_accessor :builder, :default_form_class
|
|
10
|
-
end
|
|
11
|
-
end
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
module Formtastic
|
|
2
|
-
module Inputs
|
|
3
|
-
# Alias for NumberInput for backwards compatibility with 1.x.
|
|
4
|
-
#
|
|
5
|
-
# @example:
|
|
6
|
-
# f.input :age, :as => :numeric
|
|
7
|
-
#
|
|
8
|
-
# @deprecated Use :as => :number instead
|
|
9
|
-
#
|
|
10
|
-
# @todo Remove on or after 2.1
|
|
11
|
-
class NumericInput < NumberInput
|
|
12
|
-
|
|
13
|
-
def initialize(builder, template, object, object_name, method, options)
|
|
14
|
-
ActiveSupport::Deprecation.warn(':as => :numeric has been deprecated in favor of :as => :number and will be removed on or after version 2.1', caller)
|
|
15
|
-
super
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
data/lib/formtastic/railtie.rb
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
module Formtastic
|
|
2
|
-
# Quick hack/shim so that any code expecting the old SemanticFormBuilder class still works.
|
|
3
|
-
# TODO remove from 2.0 with a helpful upgrade path/warning.
|
|
4
|
-
# @private
|
|
5
|
-
class SemanticFormBuilder < Formtastic::FormBuilder
|
|
6
|
-
def initialize(*args)
|
|
7
|
-
ActiveSupport::Deprecation.warn('Formtastic::SemanticFormBuilder has been deprecated in favor of Formtastic::FormBuilder.', caller)
|
|
8
|
-
super
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
end
|
data/spec/builder/errors_spec.rb
DELETED
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
require 'spec_helper'
|
|
3
|
-
|
|
4
|
-
describe 'Formtastic::FormBuilder#errors_on' do
|
|
5
|
-
|
|
6
|
-
include FormtasticSpecHelper
|
|
7
|
-
|
|
8
|
-
before do
|
|
9
|
-
@output_buffer = ''
|
|
10
|
-
mock_everything
|
|
11
|
-
@title_errors = ['must not be blank', 'must be longer than 10 characters', 'must be awesome']
|
|
12
|
-
@errors = mock('errors')
|
|
13
|
-
@new_post.stub!(:errors).and_return(@errors)
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
describe 'when there are errors' do
|
|
17
|
-
before do
|
|
18
|
-
@errors.stub!(:[]).with(:title).and_return(@title_errors)
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
after do
|
|
22
|
-
Formtastic::FormBuilder.default_inline_error_class = 'inline-errors'
|
|
23
|
-
Formtastic::FormBuilder.default_error_list_class = 'errors'
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
it 'should render a paragraph with the errors joined into a sentence when inline_errors config is :sentence' do
|
|
27
|
-
Formtastic::FormBuilder.inline_errors = :sentence
|
|
28
|
-
concat(semantic_form_for(@new_post) do |builder|
|
|
29
|
-
builder.input :title
|
|
30
|
-
end)
|
|
31
|
-
output_buffer.should have_tag('p.inline-errors', @title_errors.to_sentence)
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
it 'should render a paragraph with a overridden default class' do
|
|
35
|
-
Formtastic::FormBuilder.inline_errors = :sentence
|
|
36
|
-
Formtastic::FormBuilder.default_inline_error_class = 'better-errors'
|
|
37
|
-
concat(semantic_form_for(@new_post) do |builder|
|
|
38
|
-
builder.input(:title)
|
|
39
|
-
end)
|
|
40
|
-
output_buffer.should have_tag('p.better-errors', @title_errors.to_sentence)
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
it 'should render a paragraph with the errors joined into a sentence when inline_errors config is :sentence with a customized error class' do
|
|
44
|
-
Formtastic::FormBuilder.inline_errors = :sentence
|
|
45
|
-
concat(semantic_form_for(@new_post) do |builder|
|
|
46
|
-
builder.input(:title, :error_class => 'better-errors')
|
|
47
|
-
end)
|
|
48
|
-
output_buffer.should have_tag('p.better-errors', @title_errors.to_sentence)
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
it 'should render an unordered list with the class errors when inline_errors config is :list' do
|
|
52
|
-
Formtastic::FormBuilder.inline_errors = :list
|
|
53
|
-
concat(semantic_form_for(@new_post) do |builder|
|
|
54
|
-
builder.input(:title)
|
|
55
|
-
end)
|
|
56
|
-
output_buffer.should have_tag('ul.errors')
|
|
57
|
-
@title_errors.each do |error|
|
|
58
|
-
output_buffer.should have_tag('ul.errors li', error)
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
it 'should render an unordered list with the class overridden default class' do
|
|
63
|
-
Formtastic::FormBuilder.inline_errors = :list
|
|
64
|
-
Formtastic::FormBuilder.default_error_list_class = "better-errors"
|
|
65
|
-
concat(semantic_form_for(@new_post) do |builder|
|
|
66
|
-
builder.input :title
|
|
67
|
-
end)
|
|
68
|
-
output_buffer.should have_tag('ul.better-errors')
|
|
69
|
-
@title_errors.each do |error|
|
|
70
|
-
output_buffer.should have_tag('ul.better-errors li', error)
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
it 'should render an unordered list with the class errors when inline_errors config is :list with a customized error class' do
|
|
75
|
-
Formtastic::FormBuilder.inline_errors = :list
|
|
76
|
-
concat(semantic_form_for(@new_post) do |builder|
|
|
77
|
-
builder.input :title, :error_class => "better-errors"
|
|
78
|
-
end)
|
|
79
|
-
output_buffer.should have_tag('ul.better-errors')
|
|
80
|
-
@title_errors.each do |error|
|
|
81
|
-
output_buffer.should have_tag('ul.better-errors li', error)
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
it 'should render a paragraph with the first error when inline_errors config is :first' do
|
|
86
|
-
Formtastic::FormBuilder.inline_errors = :first
|
|
87
|
-
concat(semantic_form_for(@new_post) do |builder|
|
|
88
|
-
builder.input :title
|
|
89
|
-
end)
|
|
90
|
-
output_buffer.should have_tag('p.inline-errors', @title_errors.first)
|
|
91
|
-
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
it 'should render a paragraph with the first error when inline_errors config is :first with a customized error class' do
|
|
95
|
-
Formtastic::FormBuilder.inline_errors = :first
|
|
96
|
-
concat(semantic_form_for(@new_post) do |builder|
|
|
97
|
-
builder.input :title, :error_class => "better-errors"
|
|
98
|
-
end)
|
|
99
|
-
output_buffer.should have_tag('p.better-errors', @title_errors.first)
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
it 'should return nil when inline_errors config is :none' do
|
|
103
|
-
Formtastic::FormBuilder.inline_errors = :none
|
|
104
|
-
concat(semantic_form_for(@new_post) do |builder|
|
|
105
|
-
builder.input :title
|
|
106
|
-
end)
|
|
107
|
-
output_buffer.should_not have_tag('p.inine-errors')
|
|
108
|
-
output_buffer.should_not have_tag('ul.errors')
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
it 'should allow calling deprecated errors_on and inline_errors_for helpers' do
|
|
112
|
-
Formtastic::FormBuilder.inline_errors = :sentence
|
|
113
|
-
with_deprecation_silenced do
|
|
114
|
-
concat(semantic_form_for(@new_post) do |builder|
|
|
115
|
-
builder.errors_on :title
|
|
116
|
-
builder.inline_errors_for :title
|
|
117
|
-
end)
|
|
118
|
-
end
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
describe 'when there are no errors (nil)' do
|
|
124
|
-
before do
|
|
125
|
-
@errors.stub!(:[]).with(:title).and_return(nil)
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
it 'should return nil when inline_errors config is :sentence, :list or :none' do
|
|
129
|
-
with_deprecation_silenced do
|
|
130
|
-
[:sentence, :list, :none].each do |config|
|
|
131
|
-
with_config :inline_errors, config do
|
|
132
|
-
semantic_form_for(@new_post) do |builder|
|
|
133
|
-
builder.errors_on(:title).should be_nil
|
|
134
|
-
end
|
|
135
|
-
end
|
|
136
|
-
end
|
|
137
|
-
end
|
|
138
|
-
end
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
describe 'when there are no errors (empty array)' do
|
|
142
|
-
before do
|
|
143
|
-
@errors.stub!(:[]).with(:title).and_return([])
|
|
144
|
-
end
|
|
145
|
-
|
|
146
|
-
it 'should return nil when inline_errors config is :sentence, :list or :none' do
|
|
147
|
-
with_deprecation_silenced do
|
|
148
|
-
[:sentence, :list, :none].each do |config|
|
|
149
|
-
Formtastic::FormBuilder.inline_errors = config
|
|
150
|
-
semantic_form_for(@new_post) do |builder|
|
|
151
|
-
builder.errors_on(:title).should be_nil
|
|
152
|
-
end
|
|
153
|
-
end
|
|
154
|
-
end
|
|
155
|
-
end
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
describe 'when file type columns have errors' do
|
|
159
|
-
it "should list errors added on metadata fields" do
|
|
160
|
-
@errors.stub!(:[]).with(:document_file_name).and_return(['must be provided'])
|
|
161
|
-
@errors.stub!(:[]).with(:document_file_size).and_return(['must be less than 4mb'])
|
|
162
|
-
@errors.stub!(:[]).with(:document_content_type).and_return(['must be an image'])
|
|
163
|
-
@errors.stub!(:[]).with(:document).and_return(nil)
|
|
164
|
-
|
|
165
|
-
with_config :inline_errors, :sentence do
|
|
166
|
-
concat(semantic_form_for(@new_post) do |builder|
|
|
167
|
-
concat(builder.input(:document))
|
|
168
|
-
end)
|
|
169
|
-
end
|
|
170
|
-
output_buffer.should have_tag("li.error")
|
|
171
|
-
output_buffer.should have_tag('p.inline-errors', (['must be an image','must be provided', 'must be less than 4mb']).to_sentence)
|
|
172
|
-
end
|
|
173
|
-
end
|
|
174
|
-
|
|
175
|
-
describe 'when there are errors on the association and column' do
|
|
176
|
-
|
|
177
|
-
it "should list all unique errors" do
|
|
178
|
-
::Post.stub!(:reflections).and_return({:author => mock('reflection', :options => {}, :macro => :belongs_to)})
|
|
179
|
-
|
|
180
|
-
@errors.stub!(:[]).with(:author).and_return(['must not be blank'])
|
|
181
|
-
@errors.stub!(:[]).with(:author_id).and_return(['is already taken', 'must not be blank']) # note the duplicate of association
|
|
182
|
-
|
|
183
|
-
with_config :inline_errors, :list do
|
|
184
|
-
concat(semantic_form_for(@new_post) do |builder|
|
|
185
|
-
concat(builder.input(:author))
|
|
186
|
-
end)
|
|
187
|
-
end
|
|
188
|
-
output_buffer.should have_tag("ul.errors li", /must not be blank/, :count => 1)
|
|
189
|
-
output_buffer.should have_tag("ul.errors li", /is already taken/, :count => 1)
|
|
190
|
-
end
|
|
191
|
-
|
|
192
|
-
end
|
|
193
|
-
|
|
194
|
-
describe "when there are errors on a has_many association" do
|
|
195
|
-
it "should include the association ids error messages" do
|
|
196
|
-
semantic_form_for(@new_post) do |builder|
|
|
197
|
-
builder.send(:error_keys, :sub_posts, {}).should include(:sub_post_ids)
|
|
198
|
-
end
|
|
199
|
-
end
|
|
200
|
-
end
|
|
201
|
-
|
|
202
|
-
end
|
|
203
|
-
|