From 741a2f2c94f516827b193b5421d018b10b1fcd87 Mon Sep 17 00:00:00 2001 From: Eric Tillberg Date: Mon, 7 Oct 2024 14:37:13 -0400 Subject: [PATCH] Handle nil in form_data properly for Form Submission Attempts (#18774) --- app/models/form_submission_attempt.rb | 4 ++- spec/models/form_submission_attempt_spec.rb | 28 +++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/app/models/form_submission_attempt.rb b/app/models/form_submission_attempt.rb index e6647a4c63..b0593809c5 100644 --- a/app/models/form_submission_attempt.rb +++ b/app/models/form_submission_attempt.rb @@ -79,8 +79,10 @@ def log_status_change private def enqueue_result_email(notification_type) + raw_form_data = form_submission.form_data || '{}' + form_data = JSON.parse(raw_form_data) config = { - form_data: JSON.parse(form_submission.form_data), + form_data:, form_number: form_submission.form_type, confirmation_number: form_submission.benefits_intake_uuid, date_submitted: created_at.strftime('%B %d, %Y'), diff --git a/spec/models/form_submission_attempt_spec.rb b/spec/models/form_submission_attempt_spec.rb index 8c38acd0b4..3f2b1d9a12 100644 --- a/spec/models/form_submission_attempt_spec.rb +++ b/spec/models/form_submission_attempt_spec.rb @@ -75,6 +75,34 @@ expect(notification_email).to have_received(:send) end + + context 'form_data is nil' do + let(:config) do + { + form_data: nil, + form_number: anything, + date_submitted: anything, + lighthouse_updated_at: anything, + confirmation_number: anything + } + end + + it 'gracefully handles the nil form_data' do + notification_email = double + allow(JSON).to receive(:parse) + allow(SimpleFormsApi::NotificationEmail).to receive(:new).with( + config, + notification_type:, + user_account: anything + ).and_return(notification_email) + allow(notification_email).to receive(:send) + form_submission_attempt = create(:form_submission_attempt) + + form_submission_attempt.vbms! + + expect(JSON).to have_received(:parse).with('{}') + end + end end end