Skip to content

Commit

Permalink
72987 persist ipf data in 5655 (#16019)
Browse files Browse the repository at this point in the history
* save InProgressForm to 5655Submission

* oh linter, what would I do with out you?

* remove schema anomolies
  • Loading branch information
kjsuarez authored Mar 21, 2024
1 parent 392ef0f commit 20b3456
Show file tree
Hide file tree
Showing 7 changed files with 112 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class StaleUserError < StandardError; end
validates :user_uuid, presence: true
belongs_to :user_account, dependent: nil, optional: true
has_kms_key
has_encrypted :form_json, :metadata, key: :kms_key, **lockbox_options
has_encrypted :form_json, :metadata, :ipf_data, key: :kms_key, **lockbox_options

def kms_encryption_context
{
Expand All @@ -39,6 +39,10 @@ def form
@form_hash ||= JSON.parse(form_json)
end

def ipf_form
@ipf_form_hash ||= JSON.parse(ipf_data)
end

def user_cache_id
user = User.find(user_uuid)
raise StaleUserError, user_uuid unless user
Expand Down
4 changes: 4 additions & 0 deletions modules/debts_api/lib/debts_api/v0/fsr_form.rb
Original file line number Diff line number Diff line change
Expand Up @@ -46,5 +46,9 @@ def enabled_feature_flags(user)

enabled_flags
end

def in_progress_form(user_uuid)
InProgressForm.where(form_id: '5655', user_uuid:).last
end
end
end
3 changes: 3 additions & 0 deletions modules/debts_api/lib/debts_api/v0/vba_fsr_form.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,13 @@ def initialize(params)
def persist_form_submission
metadata = { debts: @debts }.to_json
public_metadata = build_public_metadata
ipf = in_progress_form(@user.uuid)
ipf_data = ipf&.form_data

DebtsApi::V0::Form5655Submission.create(
form_json: @form_data.to_json,
metadata:,
ipf_data:,
user_uuid: @user.uuid,
user_account: @user.user_account,
public_metadata:,
Expand Down
3 changes: 3 additions & 0 deletions modules/debts_api/lib/debts_api/v0/vha_fsr_form.rb
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,13 @@ def initialize(params)
def persist_form_submission
metadata = { copays: @copays }.to_json
public_metadata = build_public_metadata
ipf = in_progress_form(@user.uuid)
ipf_data = ipf&.form_data

DebtsApi::V0::Form5655Submission.create(
form_json: @form_data.to_json,
metadata:,
ipf_data:,
user_uuid: @user.uuid,
user_account: @user.user_account,
public_metadata:,
Expand Down
36 changes: 36 additions & 0 deletions modules/debts_api/spec/lib/debt_api/v0/vba_fsr_form_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# frozen_string_literal: true

require 'rails_helper'
require 'debts_api/v0/fsr_form_builder'
require 'debts_api/v0/vha_fsr_form'
RSpec.describe DebtsApi::V0::VbaFsrForm, type: :service do
describe '#persist_form_submission' do
let(:combined_form_data) { get_fixture_absolute('modules/debts_api/spec/fixtures/fsr_forms/combined_fsr_form') }
let(:vba_form_data) { get_fixture_absolute('modules/debts_api/spec/fixtures/fsr_forms/vba_fsr_form') }
let(:vha_form_data) { get_fixture_absolute('modules/debts_api/spec/fixtures/fsr_forms/vha_fsr_form') }
let(:user) { build(:user, :loa3) }
let(:user_data) { build(:user_profile_attributes) }

context 'given an InProgressForm can be found' do
let(:builder) { DebtsApi::V0::FsrFormBuilder.new(combined_form_data, '123', user) }
let(:in_progress_form) { create(:in_progress_5655_form, user_uuid: user.uuid) }

it 'saves ipf data' do
in_progress_form
vba_form = builder.vba_form
submission = vba_form.persist_form_submission
expect(submission.ipf_data).to eq(in_progress_form.form_data)
end
end

context 'given an InProgressForm can not be found' do
let(:builder) { DebtsApi::V0::FsrFormBuilder.new(combined_form_data, '123', user) }

it 'leaves ipf data nil' do
vha_form = builder.vha_forms.first
submission = vha_form.persist_form_submission
expect(submission.ipf_data).to eq(nil)
end
end
end
end
36 changes: 36 additions & 0 deletions modules/debts_api/spec/lib/debt_api/v0/vha_fsr_form_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# frozen_string_literal: true

require 'rails_helper'
require 'debts_api/v0/fsr_form_builder'
require 'debts_api/v0/vha_fsr_form'
RSpec.describe DebtsApi::V0::VhaFsrForm, type: :service do
describe '#persist_form_submission' do
let(:combined_form_data) { get_fixture_absolute('modules/debts_api/spec/fixtures/fsr_forms/combined_fsr_form') }
let(:vba_form_data) { get_fixture_absolute('modules/debts_api/spec/fixtures/fsr_forms/vba_fsr_form') }
let(:vha_form_data) { get_fixture_absolute('modules/debts_api/spec/fixtures/fsr_forms/vha_fsr_form') }
let(:user) { build(:user, :loa3) }
let(:user_data) { build(:user_profile_attributes) }

context 'given an InProgressForm can be found' do
let(:builder) { DebtsApi::V0::FsrFormBuilder.new(combined_form_data, '123', user) }
let(:in_progress_form) { create(:in_progress_5655_form, user_uuid: user.uuid) }

it 'saves ipf data' do
in_progress_form
vha_form = builder.vha_forms.first
submission = vha_form.persist_form_submission
expect(submission.ipf_data).to eq(in_progress_form.form_data)
end
end

context 'given an InProgressForm can not be found' do
let(:builder) { DebtsApi::V0::FsrFormBuilder.new(combined_form_data, '123', user) }

it 'leaves ipf data nil' do
vha_form = builder.vha_forms.first
submission = vha_form.persist_form_submission
expect(submission.ipf_data).to eq(nil)
end
end
end
end
25 changes: 25 additions & 0 deletions spec/factories/in_progress_forms/in_progress_forms.rb
Original file line number Diff line number Diff line change
Expand Up @@ -350,5 +350,30 @@
}.to_json
end
end

factory :in_progress_5655_form do
user_uuid { SecureRandom.uuid }
form_id { '5655' }
metadata do
{
version: 1,
returnUrl: 'foo.com'
}
end
form_data do
# form data truncated for brevity
{
'veteran_full_name' =>
{
'first' => 'first_name',
'middle' => 'M',
'last' => 'last_name',
'suffix' => 'Sr.'
},
'veteran_social_security_number' => '111223333',
'veteran_date_of_birth' => '1985-03-07'
}.to_json
end
end
end
end

0 comments on commit 20b3456

Please sign in to comment.