Skip to content

Commit 5078399

Browse files
authored
FDF 138477 veteran information (#27589)
1 parent b44070b commit 5078399

File tree

5 files changed

+62
-6
lines changed

5 files changed

+62
-6
lines changed

app/controllers/v0/dependents_applications_controller.rb

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ def create # rubocop:disable Metrics/MethodLength
4646
if claim_info[:proc_state] == 'MANUAL_VAGOV' && claim_info[:participant_id].present?
4747
user_data = DependentsBenefits::UserData.new(current_user, claim.parsed_form)
4848
claim.add_veteran_info(JSON.parse(user_data.get_user_json))
49-
claim.add_signature_date
5049

5150
submission = submit_via_forms_api(claim, claim_info[:claim_label], claim_info[:participant_id])
5251

@@ -88,8 +87,7 @@ def create # rubocop:disable Metrics/MethodLength
8887
def submit_via_forms_api(claim, claim_label, participant_id)
8988
digital_forms_api_submission_service ||= DigitalFormsApi::Service::Submissions.new
9089

91-
payload = claim.parsed_form.deep_dup
92-
payload = claim.deep_camelize_keys(payload.merge(payload.delete('dependents_application')))
90+
payload = claim.fdf_submission_payload
9391
metadata = {
9492
sourceRequestId: claim.guid,
9593
formId: claim.claim_form_type,

modules/dependents_benefits/app/controllers/dependents_benefits/v0/claims_controller.rb

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ def create # rubocop:disable Metrics/MethodLength
7171
claim_info = claim.get_claim_information(current_user)
7272
if claim_info[:proc_state] == 'MANUAL_VAGOV' && claim_info[:participant_id].present?
7373
claim.add_veteran_info(JSON.parse(user_data.get_user_json))
74-
claim.add_signature_date
7574

7675
submission = submit_via_forms_api(claim, claim_info[:claim_label], claim_info[:participant_id])
7776

@@ -114,8 +113,7 @@ def create # rubocop:disable Metrics/MethodLength
114113
def submit_via_forms_api(claim, claim_label, participant_id)
115114
digital_forms_api_submission_service ||= DigitalFormsApi::Service::Submissions.new
116115

117-
payload = claim.parsed_form.deep_dup
118-
payload = claim.deep_camelize_keys(payload.merge(payload.delete('dependents_application')))
116+
payload = claim.fdf_submission_payload
119117
metadata = {
120118
sourceRequestId: claim.guid,
121119
formId: claim.claim_form_type,

modules/dependents_benefits/lib/dependents_benefits/claim_behavior.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,17 @@ def parent_claim_id
4040
child_of_groups&.last&.parent_claim_id
4141
end
4242

43+
# Format the claim data for submission to fdf
44+
# TODO: refactor so this is no longer needed after FDF pilot; future
45+
def fdf_submission_payload
46+
add_signature_date
47+
payload = parsed_form.deep_dup
48+
dependents_app = payload.delete('dependents_application') || {}
49+
50+
payload = payload.deep_merge(dependents_app) # combine nested hashes
51+
deep_camelize_keys(payload) # convert snake_case to camelCase
52+
end
53+
4354
private
4455

4556
# Returns a memoized instance of the DependentsBenefits monitor

modules/dependents_benefits/spec/factories/dependents_benefits/dependents_claim.rb

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,16 @@
2121
'report674' => true
2222
},
2323
'dependents_application' => {
24+
'veteran_information' => {
25+
'birth_date' => '1980-01-01',
26+
'full_name' => {
27+
'first' => 'Mark',
28+
'last' => 'Webb'
29+
},
30+
'ssn' => '000000000',
31+
'ssn_last_four' => '5309',
32+
'va_file_last_four' => '5309'
33+
},
2434
'veteran_contact_information' => {
2535
'phone_number' => '1112223333',
2636
'international_phone_number' => '1234567890123',
@@ -158,6 +168,16 @@
158168
report_child18_or_older_is_not_attending_school: true
159169
},
160170
dependents_application: {
171+
veteran_information: {
172+
birth_date: '1980-01-01',
173+
full_name: {
174+
first: 'Mark',
175+
last: 'Webb'
176+
},
177+
ssn: '000000000',
178+
ssn_last_four: '5309',
179+
va_file_last_four: '5309'
180+
},
161181
household_income: true,
162182
'view:completed_child_stopped_attending_school': false,
163183
'view:completed_married_child': false,

modules/dependents_benefits/spec/lib/dependents_benefits/claim_behavior_spec.rb

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,35 @@
163163
end
164164
end
165165

166+
describe '#fdf_submission_payload' do
167+
it 'returns expected format for FDF' do
168+
claim.update(created_at: Time.new(2026, 3, 1).utc)
169+
170+
full_name = { 'first' => 'Roy', 'middle' => 'G', 'last' => 'Biv' }
171+
veteran_information = { 'veteran_information' => {
172+
'full_name' => full_name,
173+
'common_name' => 'Roy',
174+
'va_profile_email' => 'va@gov',
175+
'email' => 'foo@bar.com',
176+
'participant_id' => 'TEST',
177+
'ssn' => '123456789',
178+
'va_file_number' => 'FOOBAR',
179+
'birth_date' => '1776-07-04',
180+
'uuid' => SecureRandom.uuid,
181+
'icn' => 'SOMETHING'
182+
} }.to_json
183+
claim.add_veteran_info(JSON.parse(veteran_information))
184+
185+
payload = claim.fdf_submission_payload
186+
187+
expect(payload).not_to include('dependents_application')
188+
expect(payload).not_to include('dependentsApplication')
189+
expect(payload).to include('signatureDate')
190+
expect(payload.dig('veteranInformation', 'vaFileNumber')).to eq('FOOBAR')
191+
expect(payload.dig('veteranInformation', 'fullName', 'last')).to eq('Webb') # retain what was submitted
192+
end
193+
end
194+
166195
describe 'validation behavior' do
167196
context 'when the form matches the schema' do
168197
let(:valid_combined_form) { build(:dependents_claim_combined_form) }

0 commit comments

Comments
 (0)