formtastic-bootstrap 1.2.0 → 2.0.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.
Files changed (90) hide show
  1. data/Gemfile +5 -3
  2. data/Gemfile.lock +72 -60
  3. data/README.md +4 -1
  4. data/Rakefile +1 -1
  5. data/VERSION +1 -1
  6. data/formtastic-bootstrap.gemspec +49 -16
  7. data/lib/formtastic-bootstrap/actions/base.rb +22 -0
  8. data/lib/formtastic-bootstrap/actions/button_action.rb +13 -0
  9. data/lib/formtastic-bootstrap/actions/input_action.rb +13 -0
  10. data/lib/formtastic-bootstrap/actions/link_action.rb +12 -0
  11. data/lib/formtastic-bootstrap/actions.rb +10 -0
  12. data/lib/formtastic-bootstrap/form_builder.rb +4 -2
  13. data/lib/formtastic-bootstrap/helpers/action_helper.rb +12 -0
  14. data/lib/formtastic-bootstrap/helpers/actions_helper.rb +24 -0
  15. data/lib/formtastic-bootstrap/helpers/fieldset_wrapper.rb +2 -4
  16. data/lib/formtastic-bootstrap/helpers/inputs_helper.rb +0 -2
  17. data/lib/formtastic-bootstrap/helpers.rb +6 -8
  18. data/lib/formtastic-bootstrap/inputs/base/choices.rb +6 -35
  19. data/lib/formtastic-bootstrap/inputs/base/collections.rb +9 -0
  20. data/lib/formtastic-bootstrap/inputs/base/grouped_collections.rb +9 -0
  21. data/lib/formtastic-bootstrap/inputs/base/hints.rb +1 -1
  22. data/lib/formtastic-bootstrap/inputs/base/labelling.rb +14 -3
  23. data/lib/formtastic-bootstrap/inputs/base/numeric.rb +9 -0
  24. data/lib/formtastic-bootstrap/inputs/base/stringish.rb +4 -5
  25. data/lib/formtastic-bootstrap/inputs/base/timeish.rb +38 -18
  26. data/lib/formtastic-bootstrap/inputs/base/wrapping.rb +22 -34
  27. data/lib/formtastic-bootstrap/inputs/base.rb +29 -6
  28. data/lib/formtastic-bootstrap/inputs/boolean_input.rb +14 -18
  29. data/lib/formtastic-bootstrap/inputs/check_boxes_input.rb +16 -11
  30. data/lib/formtastic-bootstrap/inputs/date_input.rb +3 -9
  31. data/lib/formtastic-bootstrap/inputs/date_select_input.rb +8 -0
  32. data/lib/formtastic-bootstrap/inputs/datetime_input.rb +3 -12
  33. data/lib/formtastic-bootstrap/inputs/datetime_select_input.rb +8 -0
  34. data/lib/formtastic-bootstrap/inputs/email_input.rb +1 -1
  35. data/lib/formtastic-bootstrap/inputs/file_input.rb +1 -1
  36. data/lib/formtastic-bootstrap/inputs/hidden_input.rb +1 -1
  37. data/lib/formtastic-bootstrap/inputs/number_input.rb +3 -3
  38. data/lib/formtastic-bootstrap/inputs/password_input.rb +1 -1
  39. data/lib/formtastic-bootstrap/inputs/phone_input.rb +1 -1
  40. data/lib/formtastic-bootstrap/inputs/radio_input.rb +28 -14
  41. data/lib/formtastic-bootstrap/inputs/range_input.rb +1 -1
  42. data/lib/formtastic-bootstrap/inputs/search_input.rb +1 -1
  43. data/lib/formtastic-bootstrap/inputs/select_input.rb +3 -1
  44. data/lib/formtastic-bootstrap/inputs/string_input.rb +0 -7
  45. data/lib/formtastic-bootstrap/inputs/text_input.rb +1 -1
  46. data/lib/formtastic-bootstrap/inputs/time_input.rb +3 -9
  47. data/lib/formtastic-bootstrap/inputs/time_select_input.rb +8 -0
  48. data/lib/formtastic-bootstrap/inputs/time_zone_input.rb +1 -1
  49. data/lib/formtastic-bootstrap/inputs/url_input.rb +1 -1
  50. data/lib/formtastic-bootstrap/inputs.rb +30 -23
  51. data/lib/formtastic-bootstrap.rb +16 -1
  52. data/spec/actions/button_action_spec.rb +63 -0
  53. data/spec/actions/input_action_spec.rb +59 -0
  54. data/spec/actions/link_action_spec.rb +92 -0
  55. data/spec/helpers/action_helper_spec.rb +368 -0
  56. data/spec/helpers/actions_helper_spec.rb +147 -0
  57. data/spec/helpers/input_helper_spec.rb +238 -259
  58. data/spec/helpers/inputs_helper_spec.rb +84 -25
  59. data/spec/inputs/boolean_input_spec.rb +108 -75
  60. data/spec/inputs/check_boxes_input_spec.rb +106 -91
  61. data/spec/inputs/date_select_input_spec.rb +164 -0
  62. data/spec/inputs/datetime_select_input_spec.rb +112 -0
  63. data/spec/inputs/deprecated_time_date_datetime_inputs_spec.rb +48 -0
  64. data/spec/inputs/email_input_spec.rb +30 -3
  65. data/spec/inputs/file_input_spec.rb +31 -4
  66. data/spec/inputs/hidden_input_spec.rb +63 -32
  67. data/spec/inputs/number_input_spec.rb +37 -8
  68. data/spec/inputs/password_input_spec.rb +30 -3
  69. data/spec/inputs/phone_input_spec.rb +30 -3
  70. data/spec/inputs/radio_input_spec.rb +87 -60
  71. data/spec/inputs/range_input_spec.rb +32 -5
  72. data/spec/inputs/search_input_spec.rb +29 -3
  73. data/spec/inputs/select_input_spec.rb +164 -107
  74. data/spec/inputs/string_input_spec.rb +33 -22
  75. data/spec/inputs/text_input_spec.rb +39 -14
  76. data/spec/inputs/time_select_input_spec.rb +191 -0
  77. data/spec/inputs/time_zone_input_spec.rb +17 -19
  78. data/spec/inputs/url_input_spec.rb +30 -3
  79. data/spec/spec_helper.rb +21 -15
  80. data/spec/support/custom_macros.rb +61 -228
  81. data/spec/support/fb_custom_macros.rb +23 -0
  82. metadata +109 -28
  83. data/lib/formtastic-bootstrap/helpers/buttons_helper.rb +0 -52
  84. data/spec/builder/errors_spec.rb +0 -214
  85. data/spec/helpers/buttons_helper_spec.rb +0 -149
  86. data/spec/inputs/date_input_spec.rb +0 -147
  87. data/spec/inputs/datetime_input_spec.rb +0 -101
  88. data/spec/inputs/time_input_spec.rb +0 -206
  89. data/spec/support/depracation.rb +0 -6
  90. data/spec/support/formtastic_spec_helper.rb +0 -382
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: formtastic-bootstrap
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 2.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-05 00:00:00.000000000Z
12
+ date: 2012-09-05 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: formtastic
16
- requirement: &2158414500 !ruby/object:Gem::Requirement
15
+ name: formtastic-bootstrap
16
+ requirement: &2157952340 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,21 +21,32 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2158414500
24
+ version_requirements: *2157952340
25
25
  - !ruby/object:Gem::Dependency
26
- name: rails
27
- requirement: &2158413960 !ruby/object:Gem::Requirement
26
+ name: formtastic
27
+ requirement: &2157951260 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
31
31
  - !ruby/object:Gem::Version
32
- version: 3.1.0
32
+ version: '2.2'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2158413960
35
+ version_requirements: *2157951260
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &2158413300 !ruby/object:Gem::Requirement
38
+ requirement: &2157950260 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *2157950260
47
+ - !ruby/object:Gem::Dependency
48
+ name: bundler
49
+ requirement: &2157948480 !ruby/object:Gem::Requirement
39
50
  none: false
40
51
  requirements:
41
52
  - - ! '>='
@@ -43,10 +54,65 @@ dependencies:
43
54
  version: '0'
44
55
  type: :development
45
56
  prerelease: false
46
- version_requirements: *2158413300
57
+ version_requirements: *2157948480
58
+ - !ruby/object:Gem::Dependency
59
+ name: jeweler
60
+ requirement: &2157946680 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *2157946680
69
+ - !ruby/object:Gem::Dependency
70
+ name: rcov
71
+ requirement: &2157945240 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *2157945240
80
+ - !ruby/object:Gem::Dependency
81
+ name: rspec_tag_matchers
82
+ requirement: &2157944560 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *2157944560
91
+ - !ruby/object:Gem::Dependency
92
+ name: ammeter
93
+ requirement: &2157943720 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ type: :development
100
+ prerelease: false
101
+ version_requirements: *2157943720
102
+ - !ruby/object:Gem::Dependency
103
+ name: rspec-rails
104
+ requirement: &2157923220 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 2.8.0
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: *2157923220
47
113
  - !ruby/object:Gem::Dependency
48
114
  name: bundler
49
- requirement: &2158412700 !ruby/object:Gem::Requirement
115
+ requirement: &2157921660 !ruby/object:Gem::Requirement
50
116
  none: false
51
117
  requirements:
52
118
  - - ! '>='
@@ -54,10 +120,10 @@ dependencies:
54
120
  version: '0'
55
121
  type: :development
56
122
  prerelease: false
57
- version_requirements: *2158412700
123
+ version_requirements: *2157921660
58
124
  - !ruby/object:Gem::Dependency
59
125
  name: jeweler
60
- requirement: &2158412120 !ruby/object:Gem::Requirement
126
+ requirement: &2157920520 !ruby/object:Gem::Requirement
61
127
  none: false
62
128
  requirements:
63
129
  - - ! '>='
@@ -65,10 +131,10 @@ dependencies:
65
131
  version: '0'
66
132
  type: :development
67
133
  prerelease: false
68
- version_requirements: *2158412120
134
+ version_requirements: *2157920520
69
135
  - !ruby/object:Gem::Dependency
70
136
  name: rcov
71
- requirement: &2158411460 !ruby/object:Gem::Requirement
137
+ requirement: &2157919740 !ruby/object:Gem::Requirement
72
138
  none: false
73
139
  requirements:
74
140
  - - ! '>='
@@ -76,10 +142,10 @@ dependencies:
76
142
  version: '0'
77
143
  type: :development
78
144
  prerelease: false
79
- version_requirements: *2158411460
145
+ version_requirements: *2157919740
80
146
  - !ruby/object:Gem::Dependency
81
147
  name: rspec_tag_matchers
82
- requirement: &2158410860 !ruby/object:Gem::Requirement
148
+ requirement: &2157918220 !ruby/object:Gem::Requirement
83
149
  none: false
84
150
  requirements:
85
151
  - - ! '>='
@@ -87,7 +153,7 @@ dependencies:
87
153
  version: '0'
88
154
  type: :development
89
155
  prerelease: false
90
- version_requirements: *2158410860
156
+ version_requirements: *2157918220
91
157
  description: Formtastic form builder to generate Twitter Bootstrap-friendly markup.
92
158
  email: mjbellantoni@yahoo.com
93
159
  executables: []
@@ -107,27 +173,38 @@ files:
107
173
  - formtastic-bootstrap.gemspec
108
174
  - lib/action_view/helpers/text_field_date_helper.rb
109
175
  - lib/formtastic-bootstrap.rb
176
+ - lib/formtastic-bootstrap/actions.rb
177
+ - lib/formtastic-bootstrap/actions/base.rb
178
+ - lib/formtastic-bootstrap/actions/button_action.rb
179
+ - lib/formtastic-bootstrap/actions/input_action.rb
180
+ - lib/formtastic-bootstrap/actions/link_action.rb
110
181
  - lib/formtastic-bootstrap/engine.rb
111
182
  - lib/formtastic-bootstrap/form_builder.rb
112
183
  - lib/formtastic-bootstrap/helpers.rb
113
- - lib/formtastic-bootstrap/helpers/buttons_helper.rb
184
+ - lib/formtastic-bootstrap/helpers/action_helper.rb
185
+ - lib/formtastic-bootstrap/helpers/actions_helper.rb
114
186
  - lib/formtastic-bootstrap/helpers/fieldset_wrapper.rb
115
187
  - lib/formtastic-bootstrap/helpers/input_helper.rb
116
188
  - lib/formtastic-bootstrap/helpers/inputs_helper.rb
117
189
  - lib/formtastic-bootstrap/inputs.rb
118
190
  - lib/formtastic-bootstrap/inputs/base.rb
119
191
  - lib/formtastic-bootstrap/inputs/base/choices.rb
192
+ - lib/formtastic-bootstrap/inputs/base/collections.rb
120
193
  - lib/formtastic-bootstrap/inputs/base/errors.rb
194
+ - lib/formtastic-bootstrap/inputs/base/grouped_collections.rb
121
195
  - lib/formtastic-bootstrap/inputs/base/hints.rb
122
196
  - lib/formtastic-bootstrap/inputs/base/html.rb
123
197
  - lib/formtastic-bootstrap/inputs/base/labelling.rb
198
+ - lib/formtastic-bootstrap/inputs/base/numeric.rb
124
199
  - lib/formtastic-bootstrap/inputs/base/stringish.rb
125
200
  - lib/formtastic-bootstrap/inputs/base/timeish.rb
126
201
  - lib/formtastic-bootstrap/inputs/base/wrapping.rb
127
202
  - lib/formtastic-bootstrap/inputs/boolean_input.rb
128
203
  - lib/formtastic-bootstrap/inputs/check_boxes_input.rb
129
204
  - lib/formtastic-bootstrap/inputs/date_input.rb
205
+ - lib/formtastic-bootstrap/inputs/date_select_input.rb
130
206
  - lib/formtastic-bootstrap/inputs/datetime_input.rb
207
+ - lib/formtastic-bootstrap/inputs/datetime_select_input.rb
131
208
  - lib/formtastic-bootstrap/inputs/email_input.rb
132
209
  - lib/formtastic-bootstrap/inputs/file_input.rb
133
210
  - lib/formtastic-bootstrap/inputs/hidden_input.rb
@@ -141,17 +218,22 @@ files:
141
218
  - lib/formtastic-bootstrap/inputs/string_input.rb
142
219
  - lib/formtastic-bootstrap/inputs/text_input.rb
143
220
  - lib/formtastic-bootstrap/inputs/time_input.rb
221
+ - lib/formtastic-bootstrap/inputs/time_select_input.rb
144
222
  - lib/formtastic-bootstrap/inputs/time_zone_input.rb
145
223
  - lib/formtastic-bootstrap/inputs/url_input.rb
146
- - spec/builder/errors_spec.rb
224
+ - spec/actions/button_action_spec.rb
225
+ - spec/actions/input_action_spec.rb
226
+ - spec/actions/link_action_spec.rb
147
227
  - spec/builder/semantic_fields_for_spec.rb
148
- - spec/helpers/buttons_helper_spec.rb
228
+ - spec/helpers/action_helper_spec.rb
229
+ - spec/helpers/actions_helper_spec.rb
149
230
  - spec/helpers/input_helper_spec.rb
150
231
  - spec/helpers/inputs_helper_spec.rb
151
232
  - spec/inputs/boolean_input_spec.rb
152
233
  - spec/inputs/check_boxes_input_spec.rb
153
- - spec/inputs/date_input_spec.rb
154
- - spec/inputs/datetime_input_spec.rb
234
+ - spec/inputs/date_select_input_spec.rb
235
+ - spec/inputs/datetime_select_input_spec.rb
236
+ - spec/inputs/deprecated_time_date_datetime_inputs_spec.rb
155
237
  - spec/inputs/email_input_spec.rb
156
238
  - spec/inputs/file_input_spec.rb
157
239
  - spec/inputs/hidden_input_spec.rb
@@ -164,13 +246,12 @@ files:
164
246
  - spec/inputs/select_input_spec.rb
165
247
  - spec/inputs/string_input_spec.rb
166
248
  - spec/inputs/text_input_spec.rb
167
- - spec/inputs/time_input_spec.rb
249
+ - spec/inputs/time_select_input_spec.rb
168
250
  - spec/inputs/time_zone_input_spec.rb
169
251
  - spec/inputs/url_input_spec.rb
170
252
  - spec/spec_helper.rb
171
253
  - spec/support/custom_macros.rb
172
- - spec/support/depracation.rb
173
- - spec/support/formtastic_spec_helper.rb
254
+ - spec/support/fb_custom_macros.rb
174
255
  - vendor/assets/stylesheets/formtastic-bootstrap.css
175
256
  homepage: http://github.com/mjbellantoni/formtastic-bootstrap
176
257
  licenses:
@@ -187,7 +268,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
187
268
  version: '0'
188
269
  segments:
189
270
  - 0
190
- hash: 322211644369240484
271
+ hash: 449140475497354542
191
272
  required_rubygems_version: !ruby/object:Gem::Requirement
192
273
  none: false
193
274
  requirements:
@@ -1,52 +0,0 @@
1
- module FormtasticBootstrap
2
- module Helpers
3
- module ButtonsHelper
4
-
5
- include Formtastic::Helpers::ButtonsHelper
6
-
7
- def buttons(*args, &block)
8
-
9
- html_options = args.extract_options!
10
- html_options[:class] ||= "actions"
11
-
12
- if html_options.has_key?(:name)
13
- ActiveSupport::Deprecation.warn('The :name option is not supported')
14
- end
15
-
16
- if block_given?
17
- template.content_tag(:div, html_options) do
18
- yield
19
- end
20
- else
21
- args = [:commit] if args.empty?
22
- contents = args.map { |button_name| send(:"#{button_name}_button") }
23
- template.content_tag(:div, html_options.except(:builder, :parent, :name)) do
24
- Formtastic::Util.html_safe(contents.join)
25
- end
26
- end
27
-
28
- end
29
-
30
- def commit_button(*args)
31
- options = args.extract_options!
32
- text = options.delete(:label) || args.shift
33
-
34
- text = (localized_string(commit_button_i18n_key, text, :action, :model => commit_button_object_name) ||
35
- Formtastic::I18n.t(commit_button_i18n_key, :model => commit_button_object_name)) unless text.is_a?(::String)
36
-
37
- button_html = options.delete(:button_html) || {}
38
- button_html.merge!(:class => [button_html[:class], "btn commit", commit_button_i18n_key].compact.join(' '))
39
-
40
- # TODO We don't have a wrapper. Add deprecation message.
41
- # wrapper_html = options.delete(:wrapper_html) || {}
42
- # wrapper_html[:class] = (commit_button_wrapper_html_class << wrapper_html[:class]).flatten.compact.join(' ')
43
-
44
- accesskey = (options.delete(:accesskey) || default_commit_button_accesskey) unless button_html.has_key?(:accesskey)
45
- button_html = button_html.merge(:accesskey => accesskey) if accesskey
46
-
47
- Formtastic::Util.html_safe(submit(text, button_html))
48
- end
49
-
50
- end
51
- end
52
- end
@@ -1,214 +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(:each) do
9
- @output_buffer = ''
10
- mock_everything
11
- Formtastic::Helpers::FormHelper.builder = FormtasticBootstrap::FormBuilder
12
- @title_errors = ['must not be blank', 'must be longer than 10 characters', 'must be awesome']
13
- @errors = mock('errors')
14
- @new_post.stub!(:errors).and_return(@errors)
15
-
16
- @orig_inline_errors = FormtasticBootstrap::FormBuilder.inline_errors
17
- @orig_inline_error_class = FormtasticBootstrap::FormBuilder.default_inline_error_class
18
- @orig_error_list_class = FormtasticBootstrap::FormBuilder.default_error_list_class
19
- end
20
-
21
- after(:each) do
22
- FormtasticBootstrap::FormBuilder.inline_errors = @orig_inline_errors
23
- FormtasticBootstrap::FormBuilder.default_inline_error_class = @orig_inline_error_class
24
- FormtasticBootstrap::FormBuilder.default_error_list_class = @orig_error_list_class
25
- end
26
-
27
- describe 'when there are errors' do
28
- before do
29
- @errors.stub!(:[]).with(:title).and_return(@title_errors)
30
- end
31
-
32
- # after do
33
- # FormtasticBootstrap::FormBuilder.default_inline_error_class = 'inline-errors'
34
- # FormtasticBootstrap::FormBuilder.default_inline_error_class = 'help-inline'
35
- # FormtasticBootstrap::FormBuilder.default_error_list_class = 'errors'
36
- # end
37
-
38
- it 'should render a paragraph with the errors joined into a sentence when inline_errors config is :sentence' do
39
- FormtasticBootstrap::FormBuilder.inline_errors = :sentence
40
- concat(semantic_form_for(@new_post) do |builder|
41
- builder.input :title
42
- end)
43
- output_buffer.should have_tag('span.help-inline', @title_errors.to_sentence)
44
- end
45
-
46
- it 'should render a paragraph with a overridden default class' do
47
- FormtasticBootstrap::FormBuilder.default_inline_error_class = 'better-errors'
48
- concat(semantic_form_for(@new_post) do |builder|
49
- builder.input(:title)
50
- end)
51
- output_buffer.should have_tag('span.better-errors', @title_errors.to_sentence)
52
- end
53
-
54
- it 'should render a paragraph with the errors joined into a sentence when inline_errors config is :sentence with a customized error class' do
55
- FormtasticBootstrap::FormBuilder.inline_errors = :sentence
56
- concat(semantic_form_for(@new_post) do |builder|
57
- builder.input(:title, :error_class => 'better-errors')
58
- end)
59
- output_buffer.should have_tag('span.better-errors', @title_errors.to_sentence)
60
- end
61
-
62
- it 'should render an unordered list with the class errors when inline_errors config is :list' do
63
- FormtasticBootstrap::FormBuilder.inline_errors = :list
64
- concat(semantic_form_for(@new_post) do |builder|
65
- builder.input(:title)
66
- end)
67
- output_buffer.should have_tag('ul.errors')
68
- @title_errors.each do |error|
69
- output_buffer.should have_tag('ul.errors li', error)
70
- end
71
- end
72
-
73
- it 'should render an unordered list with the class overridden default class' do
74
- FormtasticBootstrap::FormBuilder.inline_errors = :list
75
- FormtasticBootstrap::FormBuilder.default_error_list_class = "better-errors"
76
- concat(semantic_form_for(@new_post) do |builder|
77
- builder.input :title
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 an unordered list with the class errors when inline_errors config is :list with a customized error class' do
86
- FormtasticBootstrap::FormBuilder.inline_errors = :list
87
- concat(semantic_form_for(@new_post) do |builder|
88
- builder.input :title, :error_class => "better-errors"
89
- end)
90
- output_buffer.should have_tag('ul.better-errors')
91
- @title_errors.each do |error|
92
- output_buffer.should have_tag('ul.better-errors li', error)
93
- end
94
- end
95
-
96
- it 'should render a paragraph with the first error when inline_errors config is :first' do
97
- FormtasticBootstrap::FormBuilder.inline_errors = :first
98
- concat(semantic_form_for(@new_post) do |builder|
99
- builder.input :title
100
- end)
101
- output_buffer.should have_tag('span.help-inline', @title_errors.first)
102
- end
103
-
104
- it 'should render a paragraph with the first error when inline_errors config is :first with a customized error class' do
105
- FormtasticBootstrap::FormBuilder.inline_errors = :first
106
- concat(semantic_form_for(@new_post) do |builder|
107
- builder.input :title, :error_class => "better-errors"
108
- end)
109
- output_buffer.should have_tag('span.better-errors', @title_errors.first)
110
- end
111
-
112
- it 'should return nil when inline_errors config is :none' do
113
- FormtasticBootstrap::FormBuilder.inline_errors = :none
114
- concat(semantic_form_for(@new_post) do |builder|
115
- builder.input :title
116
- end)
117
- output_buffer.should_not have_tag('span.help-inline')
118
- output_buffer.should_not have_tag('span.help-block')
119
- output_buffer.should_not have_tag('ul.errors')
120
- end
121
-
122
- it 'should allow calling deprecated errors_on and inline_errors_for helpers' do
123
- FormtasticBootstrap::FormBuilder.inline_errors = :sentence
124
- with_deprecation_silenced do
125
- concat(semantic_form_for(@new_post) do |builder|
126
- builder.errors_on :title
127
- builder.inline_errors_for :title
128
- end)
129
- end
130
- end
131
- end
132
-
133
- describe 'when there are no errors (nil)' do
134
- before do
135
- @errors.stub!(:[]).with(:title).and_return(nil)
136
- end
137
-
138
- it 'should return nil when inline_errors config is :sentence, :list or :none' do
139
- with_deprecation_silenced do
140
- [:sentence, :list, :none].each do |config|
141
- with_config :inline_errors, config do
142
- semantic_form_for(@new_post) do |builder|
143
- builder.errors_on(:title).should be_nil
144
- end
145
- end
146
- end
147
- end
148
- end
149
- end
150
-
151
- describe 'when there are no errors (empty array)' do
152
-
153
- before(:each) do
154
- @errors.stub!(:[]).with(:title).and_return([])
155
- end
156
-
157
- it 'should return nil when inline_errors config is :sentence, :list or :none' do
158
- with_deprecation_silenced do
159
- [:sentence, :list, :none].each do |config|
160
- FormtasticBootstrap::FormBuilder.inline_errors = config
161
- semantic_form_for(@new_post) do |builder|
162
- builder.errors_on(:title).should be_nil
163
- end
164
- end
165
- end
166
- end
167
- end
168
-
169
- describe 'when file type columns have errors' do
170
- it "should list errors added on metadata fields" do
171
- @errors.stub!(:[]).with(:document_file_name).and_return(['must be provided'])
172
- @errors.stub!(:[]).with(:document_file_size).and_return(['must be less than 4mb'])
173
- @errors.stub!(:[]).with(:document_content_type).and_return(['must be an image'])
174
- @errors.stub!(:[]).with(:document).and_return(nil)
175
-
176
- with_config :inline_errors, :sentence do
177
- concat(semantic_form_for(@new_post) do |builder|
178
- concat(builder.input(:document))
179
- end)
180
- end
181
- output_buffer.should have_tag("div.error")
182
- output_buffer.should have_tag('span.help-inline', (['must be an image','must be provided', 'must be less than 4mb']).to_sentence)
183
- end
184
- end
185
-
186
- describe 'when there are errors on the association and column' do
187
-
188
- it "should list all unique errors" do
189
- ::Post.stub!(:reflections).and_return({:author => mock('reflection', :options => {}, :macro => :belongs_to)})
190
-
191
- @errors.stub!(:[]).with(:author).and_return(['must not be blank'])
192
- @errors.stub!(:[]).with(:author_id).and_return(['is already taken', 'must not be blank']) # note the duplicate of association
193
-
194
- with_config :inline_errors, :list do
195
- concat(semantic_form_for(@new_post) do |builder|
196
- concat(builder.input(:author))
197
- end)
198
- end
199
- output_buffer.should have_tag("ul.errors li", /must not be blank/, :count => 1)
200
- output_buffer.should have_tag("ul.errors li", /is already taken/, :count => 1)
201
- end
202
-
203
- end
204
-
205
- describe "when there are errors on a has_many association" do
206
- it "should include the association ids error messages" do
207
- semantic_form_for(@new_post) do |builder|
208
- builder.send(:error_keys, :sub_posts, {}).should include(:sub_post_ids)
209
- end
210
- end
211
- end
212
-
213
- end
214
-
@@ -1,149 +0,0 @@
1
- # encoding: utf-8
2
- require 'spec_helper'
3
-
4
- describe 'Formtastic::FormBuilder#buttons' do
5
-
6
- include FormtasticSpecHelper
7
-
8
- before do
9
- @output_buffer = ''
10
- mock_everything
11
- Formtastic::Helpers::FormHelper.builder = FormtasticBootstrap::FormBuilder
12
- end
13
-
14
- describe 'with a block' do
15
- describe 'when no options are provided' do
16
- before do
17
- concat(semantic_form_for(@new_post) do |builder|
18
- buttons = builder.buttons do
19
- concat('hello')
20
- end
21
- concat(buttons)
22
- end)
23
- end
24
-
25
- it 'should render a div inside the form, with a class of "actions"' do
26
- output_buffer.should have_tag("form div.actions")
27
- end
28
-
29
- it 'should not render an ol inside the div' do
30
- output_buffer.should_not have_tag("form div.actions ol")
31
- end
32
-
33
- it 'should render the contents of the block inside the input' do
34
- output_buffer.should have_tag("form div.actions", /hello/)
35
- end
36
-
37
- it 'should not render a legend inside the div' do
38
- output_buffer.should_not have_tag("form div.actions legend")
39
- end
40
- end
41
-
42
- describe 'when other options are provided' do
43
- before do
44
- @id_option = 'advanced'
45
- @class_option = 'wide'
46
-
47
- concat(semantic_form_for(@new_post) do |builder|
48
- builder.buttons :id => @id_option, :class => @class_option do
49
- end
50
- end)
51
- end
52
- it 'should pass the options into the div tag as attributes' do
53
- output_buffer.should have_tag("form div##{@id_option}")
54
- output_buffer.should have_tag("form div.#{@class_option}")
55
- end
56
- end
57
-
58
- end
59
-
60
- describe 'without a block' do
61
-
62
- describe 'with no args (default buttons)' do
63
-
64
- before do
65
- concat(semantic_form_for(@new_post) do |builder|
66
- concat(builder.buttons)
67
- end)
68
- end
69
-
70
- it 'should render a form' do
71
- output_buffer.should have_tag('form')
72
- end
73
-
74
- it 'should render a "actions" div inside the form' do
75
- output_buffer.should have_tag('form div.actions')
76
- end
77
-
78
- it 'should not render a legend in the div' do
79
- output_buffer.should_not have_tag('form div.actions legend')
80
- end
81
-
82
- it 'should render an button item in the ol for each default button' do
83
- output_buffer.should have_tag('form div.actions input.btn', :count => 1)
84
- end
85
-
86
- it 'should render a commit list item for the commit button' do
87
- output_buffer.should have_tag('form div.actions input.commit')
88
- end
89
-
90
- end
91
-
92
- describe 'with button names as args' do
93
-
94
- before do
95
- concat(semantic_form_for(@new_post) do |builder|
96
- concat(builder.buttons(:commit))
97
- end)
98
- end
99
-
100
- it 'should render a form with a div containing an input for each button arg' do
101
- output_buffer.should have_tag('form > div.actions > input', :count => 1)
102
- output_buffer.should have_tag('form > div.actions > input.commit')
103
- end
104
-
105
- end
106
-
107
- describe 'with :names' do
108
-
109
- before do
110
- ActiveSupport::Deprecation.should_receive(:warn)
111
- concat(
112
- semantic_form_for(@new_post) do |builder|
113
- concat(builder.buttons(:commit, :name => "Now click a button"))
114
- end
115
- )
116
- end
117
-
118
- it 'should warn that \':name\' is not supported' do
119
- # Assertion is above in the before block.
120
- end
121
-
122
- end
123
-
124
-
125
- describe 'with button names and an options hash' do
126
-
127
- before do
128
- concat(
129
- semantic_form_for(@new_post) do |builder|
130
- concat(builder.buttons(:commit, :id => "my-id"))
131
- end
132
- )
133
- end
134
-
135
- it 'should render a form with a div containing a input for each button arg' do
136
- output_buffer.should have_tag('form > div.actions > input', :count => 1)
137
- output_buffer.should have_tag('form > div.actions > input.commit', :count => 1)
138
- end
139
-
140
- it 'should pass the options down to the div' do
141
- output_buffer.should have_tag('form > div#my-id.actions')
142
- end
143
-
144
- end
145
-
146
- end
147
-
148
- end
149
-