formtastic 4.0.0 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
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