diff --git a/app/helpers/formatting_helper.rb b/app/helpers/formatting_helper.rb index aff5bae86..69626852d 100644 --- a/app/helpers/formatting_helper.rb +++ b/app/helpers/formatting_helper.rb @@ -1,11 +1,13 @@ module FormattingHelper def ensure_punctuation(value) return value if value.blank? + value.match?(/[[:punct:]]\z/) && !value.match?(/[(){}\[\]]\z/) ? value : "#{value}." end def downcase_first_letter(str) return str if str.blank? + str[0].downcase + str[1..] end end diff --git a/spec/models/form/question_spec.rb b/spec/models/form/question_spec.rb index 76cb7edc1..cce1d07c3 100644 --- a/spec/models/form/question_spec.rb +++ b/spec/models/form/question_spec.rb @@ -395,57 +395,57 @@ RSpec.describe Form::Question, type: :model do let(:question_with_id_only_no_punctuation) { described_class.new("address_line1_input", {}, page) } context "when the error label should stay the same" do - it "returns the error label" do + it "returns the error label unchanged with full stop" do expect(question_with_error_label_with_full_stop.error_display_label).to eq("Address line 1.") end - it "returns the error label" do + it "returns the error label unchanged with question mark" do expect(question_with_error_label_with_question_mark.error_display_label).to eq("Address line 1?") end - it "returns the error label" do + it "returns the check answer label unchanged with full stop" do expect(question_with_check_answer_label_with_full_stop.error_display_label).to eq("Address line 1.") end - it "returns the error label" do + it "returns the check answer label unchanged with question mark" do expect(question_with_check_answer_label_with_question_mark.error_display_label).to eq("Address line 1?") end - it "returns the error label" do + it "returns the header unchanged with full stop" do expect(question_with_header_with_full_stop.error_display_label).to eq("Address line 1.") end - it "returns the error label" do + it "returns the header unchanged with question mark" do expect(question_with_header_with_question_mark.error_display_label).to eq("Address line 1?") end end context "when the error label should have a full stop added" do - it "returns the error label" do + it "returns the error label with no punctuation changed to with a full stop" do expect(question_with_error_label_no_punctuation.error_display_label).to eq("Address line 1.") end - it "returns the error label" do + it "returns the error label with brackets changed to with a full stop" do expect(question_with_error_label_with_brackets.error_display_label).to eq("(Address line 1).") end - it "returns the error label" do + it "returns the check answer label with no punctuation changed with a full stop" do expect(question_with_check_answer_label_no_punctuation.error_display_label).to eq("Address line 1.") end - it "returns the error label" do + it "returns the check answer label with brackets changed with a full stop" do expect(question_with_check_answer_label_with_brackets.error_display_label).to eq("(Address line 1).") end - it "returns the error label" do + it "returns the header with no punctuation changed with a full stop" do expect(question_with_header_no_punctuation.error_display_label).to eq("Address line 1.") end - it "returns the error label" do + it "returns the header with brackets changed with a full stop" do expect(question_with_header_with_brackets.error_display_label).to eq("(Address line 1).") end - it "returns the error label" do + it "returns the id with no punctuation changed with a full stop" do expect(question_with_id_only_no_punctuation.error_display_label).to eq("Address line1 input.") end end