Skip to content

Commit aa78434

Browse files
authored
Merge pull request #788 from lcreid/form-with-no-model
Don't raise exception for label_as_placeholder when no model in `bootstrap_form_with`
2 parents d2862ad + d9a2d28 commit aa78434

7 files changed

Lines changed: 20 additions & 4 deletions

File tree

.github/workflows/ruby.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ jobs:
3434
matrix:
3535
ruby-version: [ '3.4', '3.3', '3.2', 'ruby-head' ]
3636
gemfile: [ '8.1', '8.0', '7.2', 'edge' ]
37+
exclude:
38+
- ruby-version: 3.2
39+
- gemfiles: 'edge'
3740
env:
3841
BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}.gemfile
3942
steps:

gemfiles/7.2.gemfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ eval File.read(gems), binding, gems # rubocop: disable Security/Eval
33

44
gem "bigdecimal" if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0")
55
gem "drb" if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0")
6+
gem "minitest", "~> 5.0"
67
gem "mutex_m" if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0")
78
gem "rails", "~> 7.2.0"
89
gem "sprockets-rails", require: "sprockets/railtie"

gemfiles/8.0.gemfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ eval File.read(gems), binding, gems # rubocop: disable Security/Eval
33

44
gem "bigdecimal" if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0")
55
gem "drb" if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0")
6+
gem "minitest", "~> 5.0"
67
gem "mutex_m" if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4.0")
78
gem "propshaft"
89
gem "rails", "~> 8.0.1"

gemfiles/common.gemfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ group :test do
99
gem "chunky_png", "~> 1.4"
1010
gem "diffy"
1111
gem "equivalent-xml"
12+
gem "minitest-mock"
1213
gem "mocha"
1314
gem "selenium-webdriver"
1415
end

lib/bootstrap_form/form_group_builder.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ def form_group_css_options(method, html_options, options)
107107
end
108108

109109
def form_group_placeholder(options, method)
110-
form_group_label_text(options[:label]) || object.class.human_attribute_name(method)
110+
form_group_label_text(options[:label]) || (object && object.class.human_attribute_name(method)) || method.to_s.humanize # rubocop:disable Style/SafeNavigation
111111
end
112112
end
113113
end

test/bootstrap_form_group_test.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,16 @@ class BootstrapFormGroupTest < ActionView::TestCase
118118
assert_equivalent_html expected, @builder.text_field(:email, label_as_placeholder: true)
119119
end
120120

121+
test "label as placeholder with form_with" do
122+
expected = <<~HTML
123+
<div class="mb-3">
124+
<label class="visually-hidden required" for="user_email">Email</label>
125+
<input required="required" class="form-control" id="user_email" placeholder="Email" name="user[email]" type="text" value="steve@example.com" />
126+
</div>
127+
HTML
128+
assert_equivalent_html expected, form_with_builder.text_field(:email, label_as_placeholder: true, required: true)
129+
end
130+
121131
test "adding prepend text" do
122132
expected = <<~HTML
123133
<div class="mb-3">

test/test_helper.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,10 @@ def setup_test_fixture
4141
end
4242

4343
# Originally only used in one test file but placed here in case it's needed in others in the future.
44+
# This simulartes `form_with` without a model, which tests aspects that wouldn't otherwise
45+
# be tested.
4446
def form_with_builder
45-
builder = nil
46-
bootstrap_form_with(model: @user) { |f| builder = f }
47-
builder
47+
BootstrapForm::FormBuilder.new(:user, false, self, {})
4848
end
4949

5050
def sort_attributes(doc)

0 commit comments

Comments
 (0)