diff --git a/lib/consul_form_builder.rb b/lib/consul_form_builder.rb index 7e4cffe2a..066257d8f 100644 --- a/lib/consul_form_builder.rb +++ b/lib/consul_form_builder.rb @@ -13,7 +13,7 @@ class ConsulFormBuilder < FoundationRailsHelper::FormBuilder define_method field do |attribute, options = {}| label_with_hint(attribute, options.merge(label_options: label_options_for(options))) + super(attribute, options.merge( - label: false, hint: false, + label: false, hint: nil, aria: { describedby: help_text_id(attribute, options) } )) end diff --git a/spec/lib/consul_form_builder_spec.rb b/spec/lib/consul_form_builder_spec.rb new file mode 100644 index 000000000..eed320cda --- /dev/null +++ b/spec/lib/consul_form_builder_spec.rb @@ -0,0 +1,42 @@ +require "rails_helper" + +describe ConsulFormBuilder do + class DummyModel + include ActiveModel::Model + attr_accessor :title + end + + let(:builder) { ConsulFormBuilder.new(:dummy, DummyModel.new, ActionView::Base.new, {}) } + + describe "hints" do + it "does not generate hints by default" do + render builder.text_field(:title) + + expect(page).not_to have_css ".help-text" + expect(page).not_to have_css "input[aria-describedby]" + end + + it "generates text with a hint if provided" do + render builder.text_field(:title, hint: "Make it quick") + + expect(page).to have_css ".help-text", text: "Make it quick" + expect(page).to have_css "input[aria-describedby='dummy_title-help-text']" + end + + it "does not generate a hint attribute" do + render builder.text_field(:title) + + expect(page).not_to have_css "input[hint]" + end + end + + attr_reader :content + + def render(content) + @content = content + end + + def page + Capybara::Node::Simple.new(content) + end +end