formtastic 4.0.0 → 5.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 (152) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +13 -13
  3. data/CHANGELOG.md +10 -1
  4. data/Gemfile.lock +99 -64
  5. data/README.md +7 -2
  6. data/formtastic.gemspec +5 -3
  7. data/gemfiles/{rails_5.2 → rails_7.0}/Gemfile +1 -1
  8. data/gemfiles/rails_7.1/Gemfile +5 -0
  9. data/gemfiles/rails_edge/Gemfile +1 -1
  10. data/lib/formtastic/action_class_finder.rb +1 -0
  11. data/lib/formtastic/actions/base.rb +1 -0
  12. data/lib/formtastic/actions/button_action.rb +1 -0
  13. data/lib/formtastic/actions/buttonish.rb +1 -0
  14. data/lib/formtastic/actions/input_action.rb +1 -0
  15. data/lib/formtastic/actions/link_action.rb +1 -0
  16. data/lib/formtastic/actions.rb +1 -0
  17. data/lib/formtastic/deprecation.rb +2 -1
  18. data/lib/formtastic/engine.rb +1 -0
  19. data/lib/formtastic/form_builder.rb +1 -0
  20. data/lib/formtastic/helpers/action_helper.rb +1 -0
  21. data/lib/formtastic/helpers/actions_helper.rb +1 -0
  22. data/lib/formtastic/helpers/enum.rb +1 -0
  23. data/lib/formtastic/helpers/errors_helper.rb +1 -0
  24. data/lib/formtastic/helpers/fieldset_wrapper.rb +1 -0
  25. data/lib/formtastic/helpers/file_column_detection.rb +1 -0
  26. data/lib/formtastic/helpers/form_helper.rb +1 -0
  27. data/lib/formtastic/helpers/input_helper.rb +2 -4
  28. data/lib/formtastic/helpers/inputs_helper.rb +2 -1
  29. data/lib/formtastic/helpers/reflection.rb +1 -0
  30. data/lib/formtastic/helpers.rb +1 -1
  31. data/lib/formtastic/html_attributes.rb +1 -0
  32. data/lib/formtastic/i18n.rb +1 -0
  33. data/lib/formtastic/input_class_finder.rb +1 -0
  34. data/lib/formtastic/inputs/base/associations.rb +1 -0
  35. data/lib/formtastic/inputs/base/choices.rb +2 -1
  36. data/lib/formtastic/inputs/base/collections.rb +4 -1
  37. data/lib/formtastic/inputs/base/database.rb +5 -7
  38. data/lib/formtastic/inputs/base/datetime_pickerish.rb +1 -0
  39. data/lib/formtastic/inputs/base/errors.rb +3 -2
  40. data/lib/formtastic/inputs/base/fileish.rb +1 -0
  41. data/lib/formtastic/inputs/base/hints.rb +1 -0
  42. data/lib/formtastic/inputs/base/html.rb +2 -1
  43. data/lib/formtastic/inputs/base/labelling.rb +3 -2
  44. data/lib/formtastic/inputs/base/naming.rb +1 -0
  45. data/lib/formtastic/inputs/base/numeric.rb +1 -0
  46. data/lib/formtastic/inputs/base/options.rb +1 -0
  47. data/lib/formtastic/inputs/base/placeholder.rb +1 -0
  48. data/lib/formtastic/inputs/base/stringish.rb +1 -0
  49. data/lib/formtastic/inputs/base/timeish.rb +4 -3
  50. data/lib/formtastic/inputs/base/validations.rb +2 -1
  51. data/lib/formtastic/inputs/base/wrapping.rb +1 -0
  52. data/lib/formtastic/inputs/base.rb +3 -2
  53. data/lib/formtastic/inputs/boolean_input.rb +2 -1
  54. data/lib/formtastic/inputs/check_boxes_input.rb +2 -1
  55. data/lib/formtastic/inputs/color_input.rb +1 -0
  56. data/lib/formtastic/inputs/country_input.rb +1 -0
  57. data/lib/formtastic/inputs/datalist_input.rb +1 -0
  58. data/lib/formtastic/inputs/date_picker_input.rb +1 -0
  59. data/lib/formtastic/inputs/date_select_input.rb +1 -0
  60. data/lib/formtastic/inputs/datetime_picker_input.rb +1 -0
  61. data/lib/formtastic/inputs/datetime_select_input.rb +1 -0
  62. data/lib/formtastic/inputs/email_input.rb +1 -0
  63. data/lib/formtastic/inputs/file_input.rb +1 -0
  64. data/lib/formtastic/inputs/hidden_input.rb +3 -2
  65. data/lib/formtastic/inputs/number_input.rb +1 -0
  66. data/lib/formtastic/inputs/password_input.rb +1 -0
  67. data/lib/formtastic/inputs/phone_input.rb +1 -0
  68. data/lib/formtastic/inputs/radio_input.rb +1 -0
  69. data/lib/formtastic/inputs/range_input.rb +1 -0
  70. data/lib/formtastic/inputs/search_input.rb +1 -0
  71. data/lib/formtastic/inputs/select_input.rb +1 -0
  72. data/lib/formtastic/inputs/string_input.rb +1 -0
  73. data/lib/formtastic/inputs/text_input.rb +1 -0
  74. data/lib/formtastic/inputs/time_picker_input.rb +1 -0
  75. data/lib/formtastic/inputs/time_select_input.rb +1 -0
  76. data/lib/formtastic/inputs/time_zone_input.rb +1 -0
  77. data/lib/formtastic/inputs/url_input.rb +1 -0
  78. data/lib/formtastic/inputs.rb +1 -0
  79. data/lib/formtastic/localized_string.rb +1 -0
  80. data/lib/formtastic/localizer.rb +1 -0
  81. data/lib/formtastic/namespaced_class_finder.rb +7 -8
  82. data/lib/formtastic/version.rb +2 -1
  83. data/lib/formtastic.rb +1 -0
  84. data/lib/generators/formtastic/form/form_generator.rb +1 -0
  85. data/lib/generators/formtastic/input/input_generator.rb +1 -0
  86. data/lib/generators/formtastic/install/install_generator.rb +1 -0
  87. data/lib/generators/templates/formtastic.rb +1 -0
  88. data/script/integration-template.rb +2 -3
  89. data/spec/action_class_finder_spec.rb +1 -0
  90. data/spec/actions/button_action_spec.rb +17 -16
  91. data/spec/actions/generic_action_spec.rb +130 -129
  92. data/spec/actions/input_action_spec.rb +16 -15
  93. data/spec/actions/link_action_spec.rb +25 -24
  94. data/spec/builder/custom_builder_spec.rb +5 -4
  95. data/spec/builder/error_proc_spec.rb +2 -1
  96. data/spec/builder/semantic_fields_for_spec.rb +26 -25
  97. data/spec/fast_spec_helper.rb +1 -0
  98. data/spec/generators/formtastic/form/form_generator_spec.rb +8 -7
  99. data/spec/generators/formtastic/input/input_generator_spec.rb +1 -0
  100. data/spec/generators/formtastic/install/install_generator_spec.rb +1 -0
  101. data/spec/helpers/action_helper_spec.rb +15 -14
  102. data/spec/helpers/actions_helper_spec.rb +42 -41
  103. data/spec/helpers/form_helper_spec.rb +26 -19
  104. data/spec/helpers/input_helper_spec.rb +70 -69
  105. data/spec/helpers/inputs_helper_spec.rb +179 -179
  106. data/spec/helpers/reflection_helper_spec.rb +4 -3
  107. data/spec/helpers/semantic_errors_helper_spec.rb +4 -3
  108. data/spec/i18n_spec.rb +13 -12
  109. data/spec/input_class_finder_spec.rb +1 -0
  110. data/spec/inputs/base/collections_spec.rb +2 -0
  111. data/spec/inputs/base/validations_spec.rb +1 -0
  112. data/spec/inputs/boolean_input_spec.rb +66 -65
  113. data/spec/inputs/check_boxes_input_spec.rb +89 -88
  114. data/spec/inputs/color_input_spec.rb +7 -6
  115. data/spec/inputs/country_input_spec.rb +10 -9
  116. data/spec/inputs/custom_input_spec.rb +1 -0
  117. data/spec/inputs/datalist_input_spec.rb +2 -1
  118. data/spec/inputs/date_picker_input_spec.rb +109 -108
  119. data/spec/inputs/date_select_input_spec.rb +63 -62
  120. data/spec/inputs/datetime_picker_input_spec.rb +118 -117
  121. data/spec/inputs/datetime_select_input_spec.rb +72 -71
  122. data/spec/inputs/email_input_spec.rb +16 -15
  123. data/spec/inputs/file_input_spec.rb +17 -16
  124. data/spec/inputs/hidden_input_spec.rb +29 -28
  125. data/spec/inputs/include_blank_spec.rb +7 -6
  126. data/spec/inputs/label_spec.rb +25 -24
  127. data/spec/inputs/number_input_spec.rb +159 -158
  128. data/spec/inputs/password_input_spec.rb +16 -15
  129. data/spec/inputs/phone_input_spec.rb +16 -15
  130. data/spec/inputs/placeholder_spec.rb +17 -16
  131. data/spec/inputs/radio_input_spec.rb +58 -57
  132. data/spec/inputs/range_input_spec.rb +108 -107
  133. data/spec/inputs/readonly_spec.rb +5 -4
  134. data/spec/inputs/search_input_spec.rb +15 -14
  135. data/spec/inputs/select_input_spec.rb +144 -93
  136. data/spec/inputs/string_input_spec.rb +36 -35
  137. data/spec/inputs/text_input_spec.rb +32 -31
  138. data/spec/inputs/time_picker_input_spec.rb +110 -109
  139. data/spec/inputs/time_select_input_spec.rb +71 -70
  140. data/spec/inputs/time_zone_input_spec.rb +21 -20
  141. data/spec/inputs/url_input_spec.rb +16 -15
  142. data/spec/inputs/with_options_spec.rb +8 -7
  143. data/spec/localizer_spec.rb +1 -0
  144. data/spec/namespaced_class_finder_spec.rb +17 -5
  145. data/spec/schema.rb +1 -0
  146. data/spec/spec_helper.rb +8 -8
  147. data/spec/support/custom_macros.rb +64 -63
  148. data/spec/support/deprecation.rb +2 -1
  149. data/spec/support/shared_examples.rb +2 -1
  150. data/spec/support/specialized_class_finder_shared_example.rb +1 -0
  151. data/spec/support/test_environment.rb +1 -0
  152. metadata +29 -14
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
  require 'spec_helper'
3
4
 
4
5
  RSpec.describe 'string input' do
@@ -6,7 +7,7 @@ RSpec.describe 'string input' do
6
7
  include FormtasticSpecHelper
7
8
 
8
9
  before do
9
- @output_buffer = ''
10
+ @output_buffer = ActionView::OutputBuffer.new ''
10
11
  mock_everything
11
12
  end
12
13
 
@@ -16,7 +17,7 @@ RSpec.describe 'string input' do
16
17
  concat(builder.input(:title, :as => :string))
17
18
  end)
18
19
  end
19
-
20
+
20
21
  it_should_have_input_wrapper_with_class(:string)
21
22
  it_should_have_input_wrapper_with_class(:input)
22
23
  it_should_have_input_wrapper_with_class(:stringish)
@@ -32,12 +33,12 @@ RSpec.describe 'string input' do
32
33
  it_should_apply_custom_input_attributes_when_input_html_provided(:string)
33
34
  it_should_apply_custom_for_to_label_when_input_html_id_provided(:string)
34
35
  it_should_apply_error_logic_for_input_type(:string)
35
-
36
+
36
37
  def input_field_for_method_should_have_maxlength(method, maxlength)
37
38
  concat(semantic_form_for(@new_post) do |builder|
38
39
  concat(builder.input(method))
39
40
  end)
40
- expect(output_buffer).to have_tag("form li input[@maxlength='#{maxlength}']")
41
+ expect(output_buffer.to_str).to have_tag("form li input[@maxlength='#{maxlength}']")
41
42
  end
42
43
 
43
44
  describe 'and its a ActiveModel' do
@@ -61,30 +62,30 @@ RSpec.describe 'string input' do
61
62
  concat(builder.input(:title))
62
63
  end)
63
64
 
64
- expect(output_buffer).to have_tag("form li input##{@new_post.class.name.underscore}_title[@maxlength='#{maxlength}']")
65
+ expect(output_buffer.to_str).to have_tag("form li input##{@new_post.class.name.underscore}_title[@maxlength='#{maxlength}']")
65
66
  end
66
67
 
67
68
  it 'should have maxlength if the optional :if or :unless options are not supplied' do
68
69
  should_have_maxlength(42, :options => {:maximum => 42})
69
70
  end
70
-
71
+
71
72
  it 'should have default maxlength if the optional :if condition is not satisifed' do
72
73
  should_have_maxlength(default_maxlength, :options => {:maximum => 42, :if => false})
73
74
  end
74
-
75
+
75
76
  it 'should have default_maxlength if the optional :if proc evaluates to false' do
76
77
  should_have_maxlength(default_maxlength, :options => {:maximum => 42, :if => proc { |record| false }})
77
78
  end
78
-
79
+
79
80
  it 'should have maxlength if the optional :if proc evaluates to true' do
80
81
  should_have_maxlength(42, :options => { :maximum => 42, :if => proc { |record| true } })
81
82
  end
82
-
83
+
83
84
  it 'should have default maxlength if the optional :if with a method name evaluates to false' do
84
85
  expect(@new_post).to receive(:specify_maxlength).at_least(1).and_return(false)
85
86
  should_have_maxlength(default_maxlength, :options => { :maximum => 42, :if => :specify_maxlength })
86
87
  end
87
-
88
+
88
89
  it 'should have maxlength if the optional :if with a method name evaluates to true' do
89
90
  expect(@new_post).to receive(:specify_maxlength).at_least(1).and_return(true)
90
91
  should_have_maxlength(42, :options => { :maximum => 42, :if => :specify_maxlength })
@@ -97,12 +98,12 @@ RSpec.describe 'string input' do
97
98
  it 'should have maxlength if the optional :unless proc evaluates to false' do
98
99
  should_have_maxlength(42, :options => { :maximum => 42, :unless => proc { |record| false } })
99
100
  end
100
-
101
+
101
102
  it 'should have default maxlength if the optional :unless with a method name evaluates to true' do
102
103
  expect(@new_post).to receive(:specify_maxlength).at_least(1).and_return(true)
103
104
  should_have_maxlength(default_maxlength, :options => { :maximum => 42, :unless => :specify_maxlength })
104
105
  end
105
-
106
+
106
107
  it 'should have maxlength if the optional :unless with a method name evaluates to false' do
107
108
  expect(@new_post).to receive(:specify_maxlength).at_least(1).and_return(false)
108
109
  should_have_maxlength(42, :options => { :maximum => 42, :unless => :specify_maxlength })
@@ -164,22 +165,22 @@ RSpec.describe 'string input' do
164
165
  end
165
166
 
166
167
  describe "when namespace is provided" do
167
-
168
+
168
169
  before do
169
170
  concat(semantic_form_for(@new_post, :namespace => 'context2') do |builder|
170
171
  concat(builder.input(:title, :as => :string))
171
172
  end)
172
173
  end
173
-
174
+
174
175
  it_should_have_input_wrapper_with_id("context2_post_title_input")
175
176
  it_should_have_label_and_input_with_id("context2_post_title")
176
-
177
+
177
178
  end
178
-
179
+
179
180
  describe "when index is provided" do
180
181
 
181
182
  before do
182
- @output_buffer = ''
183
+ @output_buffer = ActionView::OutputBuffer.new ''
183
184
  mock_everything
184
185
 
185
186
  concat(semantic_form_for(@new_post) do |builder|
@@ -188,57 +189,57 @@ RSpec.describe 'string input' do
188
189
  end)
189
190
  end)
190
191
  end
191
-
192
+
192
193
  it 'should index the id of the wrapper' do
193
- expect(output_buffer).to have_tag("li#post_author_attributes_3_name_input")
194
+ expect(output_buffer.to_str).to have_tag("li#post_author_attributes_3_name_input")
194
195
  end
195
-
196
+
196
197
  it 'should index the id of the select tag' do
197
- expect(output_buffer).to have_tag("input#post_author_attributes_3_name")
198
+ expect(output_buffer.to_str).to have_tag("input#post_author_attributes_3_name")
198
199
  end
199
-
200
+
200
201
  it 'should index the name of the select tag' do
201
- expect(output_buffer).to have_tag("input[@name='post[author_attributes][3][name]']")
202
+ expect(output_buffer.to_str).to have_tag("input[@name='post[author_attributes][3][name]']")
202
203
  end
203
-
204
+
204
205
  end
205
-
206
-
206
+
207
+
207
208
  describe "when no object is provided" do
208
209
  before do
209
210
  concat(semantic_form_for(:project, :url => 'http://test.host/') do |builder|
210
211
  concat(builder.input(:title, :as => :string))
211
212
  end)
212
213
  end
213
-
214
+
214
215
  it_should_have_label_with_text(/Title/)
215
216
  it_should_have_label_for("project_title")
216
217
  it_should_have_input_with_id("project_title")
217
218
  it_should_have_input_with_type(:text)
218
219
  it_should_have_input_with_name("project[title]")
219
220
  end
220
-
221
+
221
222
  describe "when size is nil" do
222
223
  before do
223
224
  concat(semantic_form_for(:project, :url => 'http://test.host/') do |builder|
224
225
  concat(builder.input(:title, :as => :string, :input_html => {:size => nil}))
225
226
  end)
226
227
  end
227
-
228
+
228
229
  it "should have no size attribute" do
229
- expect(output_buffer).not_to have_tag("input[@size]")
230
+ expect(output_buffer.to_str).not_to have_tag("input[@size]")
230
231
  end
231
232
  end
232
-
233
+
233
234
  describe "when required" do
234
-
235
+
235
236
  context "and configured to use HTML5 attribute" do
236
237
  it "should add the required attribute to the input's html options" do
237
238
  with_config :use_required_attribute, true do
238
239
  concat(semantic_form_for(@new_post) do |builder|
239
240
  concat(builder.input(:title, :as => :string, :required => true))
240
241
  end)
241
- expect(output_buffer).to have_tag("input[@required]")
242
+ expect(output_buffer.to_str).to have_tag("input[@required]")
242
243
  end
243
244
  end
244
245
  end
@@ -249,11 +250,11 @@ RSpec.describe 'string input' do
249
250
  concat(semantic_form_for(@new_post) do |builder|
250
251
  concat(builder.input(:title, :as => :string, :required => true))
251
252
  end)
252
- expect(output_buffer).not_to have_tag("input[@required]")
253
+ expect(output_buffer.to_str).not_to have_tag("input[@required]")
253
254
  end
254
255
  end
255
256
  end
256
-
257
+
257
258
  end
258
259
 
259
260
  end
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
  require 'spec_helper'
3
4
 
4
5
  RSpec.describe 'text input' do
@@ -6,7 +7,7 @@ RSpec.describe 'text input' do
6
7
  include FormtasticSpecHelper
7
8
 
8
9
  before do
9
- @output_buffer = ''
10
+ @output_buffer = ActionView::OutputBuffer.new ''
10
11
  mock_everything
11
12
 
12
13
  concat(semantic_form_for(@new_post) do |builder|
@@ -24,50 +25,50 @@ RSpec.describe 'text input' do
24
25
  it_should_apply_error_logic_for_input_type(:number)
25
26
 
26
27
  it 'should use input_html to style inputs' do
27
- output_buffer.replace ''
28
+ @output_buffer = ActionView::OutputBuffer.new ''
28
29
  concat(semantic_form_for(@new_post) do |builder|
29
30
  concat(builder.input(:title, :as => :text, :input_html => { :class => 'myclass' }))
30
31
  end)
31
- expect(output_buffer).to have_tag("form li textarea.myclass")
32
+ expect(output_buffer.to_str).to have_tag("form li textarea.myclass")
32
33
  end
33
34
 
34
35
  it "should have a cols attribute when :cols is a number in :input_html" do
35
- output_buffer.replace ''
36
+ @output_buffer = ActionView::OutputBuffer.new ''
36
37
  concat(semantic_form_for(@new_post) do |builder|
37
38
  concat(builder.input(:title, :as => :text, :input_html => { :cols => 42 }))
38
39
  end)
39
- expect(output_buffer).to have_tag("form li textarea[@cols='42']")
40
+ expect(output_buffer.to_str).to have_tag("form li textarea[@cols='42']")
40
41
  end
41
42
 
42
43
  it "should not have a cols attribute when :cols is nil in :input_html" do
43
- output_buffer.replace ''
44
+ @output_buffer = ActionView::OutputBuffer.new ''
44
45
  concat(semantic_form_for(@new_post) do |builder|
45
46
  concat(builder.input(:title, :as => :text, :input_html => { :cols => nil }))
46
47
  end)
47
- expect(output_buffer).not_to have_tag("form li textarea[@cols]")
48
+ expect(output_buffer.to_str).not_to have_tag("form li textarea[@cols]")
48
49
  end
49
50
 
50
51
  it "should have a rows attribute when :rows is a number in :input_html" do
51
- output_buffer.replace ''
52
+ @output_buffer = ActionView::OutputBuffer.new ''
52
53
  concat(semantic_form_for(@new_post) do |builder|
53
54
  concat(builder.input(:title, :as => :text, :input_html => { :rows => 42 }))
54
55
  end)
55
- expect(output_buffer).to have_tag("form li textarea[@rows='42']")
56
+ expect(output_buffer.to_str).to have_tag("form li textarea[@rows='42']")
56
57
 
57
58
  end
58
59
 
59
60
  it "should not have a rows attribute when :rows is nil in :input_html" do
60
- output_buffer.replace ''
61
+ @output_buffer = ActionView::OutputBuffer.new ''
61
62
  concat(semantic_form_for(@new_post) do |builder|
62
63
  concat(builder.input(:title, :as => :text, :input_html => { :rows => nil }))
63
64
  end)
64
- expect(output_buffer).not_to have_tag("form li textarea[@rows]")
65
+ expect(output_buffer.to_str).not_to have_tag("form li textarea[@rows]")
65
66
  end
66
67
 
67
68
  describe "when namespace is provided" do
68
69
 
69
70
  before do
70
- @output_buffer = ''
71
+ @output_buffer = ActionView::OutputBuffer.new ''
71
72
  mock_everything
72
73
 
73
74
  concat(semantic_form_for(@new_post, :namespace => 'context2') do |builder|
@@ -80,11 +81,11 @@ RSpec.describe 'text input' do
80
81
  it_should_have_label_for("context2_post_body")
81
82
 
82
83
  end
83
-
84
+
84
85
  describe "when index is provided" do
85
86
 
86
87
  before do
87
- @output_buffer = ''
88
+ @output_buffer = ActionView::OutputBuffer.new ''
88
89
  mock_everything
89
90
 
90
91
  concat(semantic_form_for(@new_post) do |builder|
@@ -93,28 +94,28 @@ RSpec.describe 'text input' do
93
94
  end)
94
95
  end)
95
96
  end
96
-
97
+
97
98
  it 'should index the id of the wrapper' do
98
- expect(output_buffer).to have_tag("li#post_author_attributes_3_name_input")
99
+ expect(output_buffer.to_str).to have_tag("li#post_author_attributes_3_name_input")
99
100
  end
100
-
101
+
101
102
  it 'should index the id of the select tag' do
102
- expect(output_buffer).to have_tag("textarea#post_author_attributes_3_name")
103
+ expect(output_buffer.to_str).to have_tag("textarea#post_author_attributes_3_name")
103
104
  end
104
-
105
+
105
106
  it 'should index the name of the select tag' do
106
- expect(output_buffer).to have_tag("textarea[@name='post[author_attributes][3][name]']")
107
+ expect(output_buffer.to_str).to have_tag("textarea[@name='post[author_attributes][3][name]']")
107
108
  end
108
-
109
+
109
110
  end
110
-
111
+
111
112
  context "when required" do
112
113
  it "should add the required attribute to the input's html options" do
113
- with_config :use_required_attribute, true do
114
+ with_config :use_required_attribute, true do
114
115
  concat(semantic_form_for(@new_post) do |builder|
115
116
  concat(builder.input(:title, :as => :text, :required => true))
116
117
  end)
117
- expect(output_buffer).to have_tag("textarea[@required]")
118
+ expect(output_buffer.to_str).to have_tag("textarea[@required]")
118
119
  end
119
120
  end
120
121
  end
@@ -129,13 +130,13 @@ RSpec.describe 'text input' do
129
130
  it_should_have_input_wrapper_with_class("autofocus")
130
131
 
131
132
  it "should add the autofocus attribute to the input's html options" do
132
- expect(output_buffer).to have_tag("input[@autofocus]")
133
+ expect(output_buffer.to_str).to have_tag("input[@autofocus]")
133
134
  end
134
135
  end
135
136
 
136
137
  context "when :rows is missing in :input_html" do
137
138
  before do
138
- output_buffer.replace ''
139
+ @output_buffer = ActionView::OutputBuffer.new ''
139
140
  end
140
141
 
141
142
  it "should have a rows attribute matching default_text_area_height if numeric" do
@@ -143,7 +144,7 @@ RSpec.describe 'text input' do
143
144
  concat(semantic_form_for(@new_post) do |builder|
144
145
  concat(builder.input(:title, :as => :text))
145
146
  end)
146
- expect(output_buffer).to have_tag("form li textarea[@rows='12']")
147
+ expect(output_buffer.to_str).to have_tag("form li textarea[@rows='12']")
147
148
  end
148
149
  end
149
150
 
@@ -152,7 +153,7 @@ RSpec.describe 'text input' do
152
153
  concat(semantic_form_for(@new_post) do |builder|
153
154
  concat(builder.input(:title, :as => :text))
154
155
  end)
155
- expect(output_buffer).not_to have_tag("form li textarea[@rows]")
156
+ expect(output_buffer.to_str).not_to have_tag("form li textarea[@rows]")
156
157
  end
157
158
 
158
159
  end
@@ -160,7 +161,7 @@ RSpec.describe 'text input' do
160
161
 
161
162
  context "when :cols is missing in :input_html" do
162
163
  before do
163
- output_buffer.replace ''
164
+ @output_buffer = ActionView::OutputBuffer.new ''
164
165
  end
165
166
 
166
167
  it "should have a cols attribute matching default_text_area_width if numeric" do
@@ -168,7 +169,7 @@ RSpec.describe 'text input' do
168
169
  concat(semantic_form_for(@new_post) do |builder|
169
170
  concat(builder.input(:title, :as => :text))
170
171
  end)
171
- expect(output_buffer).to have_tag("form li textarea[@cols='10']")
172
+ expect(output_buffer.to_str).to have_tag("form li textarea[@cols='10']")
172
173
  end
173
174
  end
174
175
 
@@ -177,7 +178,7 @@ RSpec.describe 'text input' do
177
178
  concat(semantic_form_for(@new_post) do |builder|
178
179
  concat(builder.input(:title, :as => :text))
179
180
  end)
180
- expect(output_buffer).not_to have_tag("form li textarea[@cols]")
181
+ expect(output_buffer.to_str).not_to have_tag("form li textarea[@cols]")
181
182
  end
182
183
 
183
184
  end