Browse Source

Merge branch 'main' into CLDC-2588-Update-soft-validation-errors-in-bulk-upload

pull/2545/head
Manny Dinssa 2 years ago committed by GitHub
parent
commit
b550d25a0c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 3
      app/models/form/question.rb
  2. 10
      app/services/bulk_upload/lettings/year2024/row_parser.rb
  3. 4
      app/services/bulk_upload/sales/year2024/row_parser.rb
  4. 8
      config/locales/en.yml
  5. 4
      spec/models/form/lettings/questions/declaration_spec.rb
  6. 8
      spec/models/form/sales/questions/privacy_notice_spec.rb
  7. 2
      spec/services/bulk_upload/lettings/year2023/row_parser_spec.rb
  8. 2
      spec/services/bulk_upload/lettings/year2024/row_parser_spec.rb
  9. 11
      spec/services/bulk_upload/sales/year2024/row_parser_spec.rb

3
app/models/form/question.rb

@ -208,7 +208,8 @@ class Form::Question
end end
def unanswered_error_message def unanswered_error_message
I18n.t("validations.not_answered", question: error_display_label.downcase) question_text = error_display_label.presence || "this question"
I18n.t("validations.not_answered", question: question_text.downcase)
end end
def suffix_label(log) def suffix_label(log)

10
app/services/bulk_upload/lettings/year2024/row_parser.rb

@ -44,7 +44,7 @@ class BulkUpload::Lettings::Year2024::RowParser
field_39: "If 'Other', what is the type of tenancy?", field_39: "If 'Other', what is the type of tenancy?",
field_40: "What is the length of the fixed-term tenancy to the nearest year?", field_40: "What is the length of the fixed-term tenancy to the nearest year?",
field_41: "Is this letting sheltered accommodation?", field_41: "Is this letting sheltered accommodation?",
field_15: "Has tenant seen the DLUHC privacy notice?", field_15: "Has tenant seen the MHCLG privacy notice?",
field_42: "What is the lead tenant's age?", field_42: "What is the lead tenant's age?",
field_43: "Which of these best describes the lead tenant's gender identity?", field_43: "Which of these best describes the lead tenant's gender identity?",
field_44: "Which of these best describes the lead tenant's ethnic background?", field_44: "Which of these best describes the lead tenant's ethnic background?",
@ -806,16 +806,14 @@ private
if setup_question?(question) if setup_question?(question)
fields.each do |field| fields.each do |field|
if errors.select { |e| fields.include?(e.attribute) }.none? if errors.select { |e| fields.include?(e.attribute) }.none? && field.present?
question_text = question.error_display_label.presence || "this question" errors.add(field, question.unanswered_error_message, category: :setup)
errors.add(field, I18n.t("validations.not_answered", question: question_text.downcase), category: :setup) if field.present?
end end
end end
else else
fields.each do |field| fields.each do |field|
unless errors.any? { |e| fields.include?(e.attribute) } unless errors.any? { |e| fields.include?(e.attribute) }
question_text = question.error_display_label.presence || "this question" errors.add(field, question.unanswered_error_message)
errors.add(field, I18n.t("validations.not_answered", question: question_text.downcase))
end end
end end
end end

4
app/services/bulk_upload/sales/year2024/row_parser.rb

@ -1364,13 +1364,13 @@ private
if setup_question?(question) if setup_question?(question)
fields.each do |field| fields.each do |field|
unless errors.any? { |e| fields.include?(e.attribute) } unless errors.any? { |e| fields.include?(e.attribute) }
errors.add(field, I18n.t("validations.not_answered", question: question.error_display_label&.downcase), category: :setup) errors.add(field, question.unanswered_error_message, category: :setup)
end end
end end
else else
fields.each do |field| fields.each do |field|
unless errors.any? { |e| fields.include?(e.attribute) } unless errors.any? { |e| fields.include?(e.attribute) }
errors.add(field, I18n.t("validations.not_answered", question: question.error_display_label&.downcase)) errors.add(field, question.unanswered_error_message)
end end
end end
end end

8
config/locales/en.yml

@ -589,13 +589,13 @@ en:
declaration: declaration:
missing: missing:
pre_2024: "You must show the MHCLG privacy notice to the tenant before you can submit this log." pre_2024: "You must show the MHCLG privacy notice to the tenant before you can submit this log"
post_2024: "You must show or give access to the MHCLG privacy notice to the tenant before you can submit this log." post_2024: "You must show or give the tenant access to the MHCLG privacy notice before you can submit this log"
privacynotice: privacynotice:
missing: missing:
pre_2024: "You must show the MHCLG privacy notice to the %{buyer_or_buyers} before you can submit this log." pre_2024: "You must show the MHCLG privacy notice to the %{buyer_or_buyers} before you can submit this log"
post_2024: "You must show or give access to the MHCLG privacy notice to the %{buyer_or_buyers} before you can submit this log." post_2024: "You must show or give the %{buyer_or_buyers} access to the MHCLG privacy notice before you can submit this log"
scheme: scheme:
toggle_date: toggle_date:

4
spec/models/form/lettings/questions/declaration_spec.rb

@ -63,7 +63,7 @@ RSpec.describe Form::Lettings::Questions::Declaration, type: :model do
end end
it "returns correct unanswered_error_message" do it "returns correct unanswered_error_message" do
expect(question.unanswered_error_message).to eq("You must show the MHCLG privacy notice to the tenant before you can submit this log.") expect(question.unanswered_error_message).to eq("You must show the MHCLG privacy notice to the tenant before you can submit this log")
end end
end end
@ -87,7 +87,7 @@ RSpec.describe Form::Lettings::Questions::Declaration, type: :model do
end end
it "returns correct unanswered_error_message" do it "returns correct unanswered_error_message" do
expect(question.unanswered_error_message).to eq("You must show or give access to the MHCLG privacy notice to the tenant before you can submit this log.") expect(question.unanswered_error_message).to eq("You must show or give the tenant access to the MHCLG privacy notice before you can submit this log")
end end
end end
end end

8
spec/models/form/sales/questions/privacy_notice_spec.rb

@ -60,7 +60,7 @@ RSpec.describe Form::Sales::Questions::PrivacyNotice, type: :model do
end end
it "returns correct unanswered_error_message" do it "returns correct unanswered_error_message" do
expect(question.unanswered_error_message).to eq("You must show the MHCLG privacy notice to the buyer before you can submit this log.") expect(question.unanswered_error_message).to eq("You must show the MHCLG privacy notice to the buyer before you can submit this log")
end end
end end
@ -78,7 +78,7 @@ RSpec.describe Form::Sales::Questions::PrivacyNotice, type: :model do
end end
it "returns correct unanswered_error_message" do it "returns correct unanswered_error_message" do
expect(question.unanswered_error_message).to eq("You must show the MHCLG privacy notice to the buyers before you can submit this log.") expect(question.unanswered_error_message).to eq("You must show the MHCLG privacy notice to the buyers before you can submit this log")
end end
end end
end end
@ -100,7 +100,7 @@ RSpec.describe Form::Sales::Questions::PrivacyNotice, type: :model do
end end
it "returns correct unanswered_error_message" do it "returns correct unanswered_error_message" do
expect(question.unanswered_error_message).to eq("You must show or give access to the MHCLG privacy notice to the buyer before you can submit this log.") expect(question.unanswered_error_message).to eq("You must show or give the buyer access to the MHCLG privacy notice before you can submit this log")
end end
end end
@ -118,7 +118,7 @@ RSpec.describe Form::Sales::Questions::PrivacyNotice, type: :model do
end end
it "returns correct unanswered_error_message" do it "returns correct unanswered_error_message" do
expect(question.unanswered_error_message).to eq("You must show or give access to the MHCLG privacy notice to the buyers before you can submit this log.") expect(question.unanswered_error_message).to eq("You must show or give the buyers access to the MHCLG privacy notice before you can submit this log")
end end
end end
end end

2
spec/services/bulk_upload/lettings/year2023/row_parser_spec.rb

@ -686,7 +686,7 @@ RSpec.describe BulkUpload::Lettings::Year2023::RowParser do
it "cannot be nulled" do it "cannot be nulled" do
parser.valid? parser.valid?
expect(parser.errors[:field_45]).to eq(["You must show the MHCLG privacy notice to the tenant before you can submit this log."]) expect(parser.errors[:field_45]).to eq(["You must show the MHCLG privacy notice to the tenant before you can submit this log"])
end end
end end
end end

2
spec/services/bulk_upload/lettings/year2024/row_parser_spec.rb

@ -747,7 +747,7 @@ RSpec.describe BulkUpload::Lettings::Year2024::RowParser do
it "cannot be nulled" do it "cannot be nulled" do
parser.valid? parser.valid?
expect(parser.errors[:field_15]).to eq(["You must answer tenant has seen the privacy notice"]) expect(parser.errors[:field_15]).to eq(["You must show or give the tenant access to the MHCLG privacy notice before you can submit this log"])
end end
end end

11
spec/services/bulk_upload/sales/year2024/row_parser_spec.rb

@ -1042,12 +1042,21 @@ RSpec.describe BulkUpload::Sales::Year2024::RowParser do
describe "#field_18" do # data protection describe "#field_18" do # data protection
let(:attributes) { setup_section_params.merge({ field_18: nil }) } let(:attributes) { setup_section_params.merge({ field_18: nil }) }
before do
parser.valid?
end
context "when not answered" do context "when not answered" do
it "returns a setup error" do it "returns a setup error" do
parser.valid?
expect(parser.errors.where(:field_18, category: :setup)).to be_present expect(parser.errors.where(:field_18, category: :setup)).to be_present
end end
end end
context "when the privacy notice is not accepted" do
it "cannot be nulled" do
expect(parser.errors[:field_18]).to eq(["You must show or give the buyer access to the MHCLG privacy notice before you can submit this log"])
end
end
end end
[ [

Loading…
Cancel
Save