Skip to content

Commit 42ecbc2

Browse files
[Disability Benefits] #108835- fix special chars in 0781V2 PDF (#22224)
Co-authored-by: Alison Jones <1816769+ajones446@users.noreply.github.com>
1 parent 32f7a57 commit 42ecbc2

File tree

8 files changed

+62
-7
lines changed

8 files changed

+62
-7
lines changed

lib/pdf_fill/filler.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,9 @@ def process_form(form_id, form_data, form_class, file_name_extension, fill_optio
156156

157157
has_template = form_class.const_defined?(:TEMPLATE)
158158
template_path = has_template ? form_class::TEMPLATE : "lib/pdf_fill/forms/pdfs/#{form_id}.pdf"
159-
160-
(form_id == SavedClaim::CaregiversAssistanceClaim::FORM ? UNICODE_PDF_FORMS : PDF_FORMS).fill_form(
159+
unicode_pdf_form_list = [SavedClaim::CaregiversAssistanceClaim::FORM,
160+
EVSS::DisabilityCompensationForm::SubmitForm0781::FORM_ID_0781V2]
161+
(form_id.in?(unicode_pdf_form_list) ? UNICODE_PDF_FORMS : PDF_FORMS).fill_form(
161162
template_path, file_path, new_hash, flatten: Rails.env.production?
162163
)
163164

spec/factories/va526ez.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,13 @@
88
)['form526'].to_json
99
}
1010
end
11+
12+
factory :va526ez_0781v2, class: 'SavedClaim::DisabilityCompensation::Form526AllClaim' do
13+
# for Form 21-0781V2
14+
form {
15+
JSON.parse(
16+
File.read('spec/support/disability_compensation_form/all_claims_with_0781v2_fe_submission.json')
17+
)['form526'].to_json
18+
}
19+
end
1120
end

spec/fixtures/pdf_fill/21-0781V2/kitchen_sink.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"email": "testy.testerson@gmail.com",
1212
"veteranPhone": "2123456789",
1313
"veteranSecondaryPhone": "3133456789",
14-
"additionalInformation": "Lorem ipsum dolor sit amet",
14+
"additionalInformation": "Lorem ‒–—―‖‗‘’‚‛“”„‟′″‴á, é, í, ó, ú, Á, É, Í, Ó, Úñ, Ñ¿, ¡ipsum dolor sit amet",
1515
"eventTypes": {
1616
"combat": true,
1717
"mst": true,
155 Bytes
Binary file not shown.

spec/fixtures/pdf_fill/21-0781V2/merge_fields.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
"third": "6789"
2525
},
2626
"veteranSecondaryPhone": "3133456789",
27-
"additionalInformation": "Lorem ipsum dolor sit amet",
27+
"additionalInformation": "Lorem ‒–—―‖‗‘’‚‛“”„‟′″‴á, é, í, ó, ú, Á, É, Í, Ó, Úñ, Ñ¿, ¡ipsum dolor sit amet",
2828
"eventTypes": {
2929
"combat": true,
3030
"mst": true,

spec/lib/pdf_fill/filler_spec.rb

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,49 @@
109109
end
110110
end
111111

112+
describe '#fill_ancillary_form with form_id is 21-0781V2' do
113+
context 'when form_id is 21-0781V2' do
114+
let(:form_id) { '21-0781V2' }
115+
let(:form_data) do
116+
get_fixture('pdf_fill/21-0781V2/kitchen_sink')
117+
end
118+
let(:hash_converter) { PdfFill::HashConverter.new('%m/%d/%Y', extras_generator) }
119+
let(:extras_generator) { instance_double(PdfFill::ExtrasGenerator) }
120+
let(:merged_form_data) do
121+
PdfFill::Forms::Va210781v2.new(form_data).merge_fields('signatureDate' => Time.now.utc.to_s)
122+
end
123+
let(:new_hash) do
124+
hash_converter.transform_data(form_data: merged_form_data, pdftk_keys: PdfFill::Forms::Va210781v2::KEY)
125+
end
126+
let(:template_path) { 'lib/pdf_fill/forms/pdfs/21-0781V2.pdf' }
127+
let(:file_path) { 'tmp/pdfs/21-0781V2_12346.pdf' }
128+
let(:claim_id) { '12346' }
129+
130+
it 'uses UNICODE_PDF_FORMS to fill the form for form_id 21-0781V2' do
131+
# Mock the hash converter and its behavior
132+
allow(extras_generator).to receive(:text?).once.and_return(true)
133+
allow(extras_generator).to receive(:add_text)
134+
allow(hash_converter).to receive(:transform_data).and_return(new_hash)
135+
136+
# Mock UNICODE_PDF_FORMS and PDF_FORMS
137+
allow(described_class::UNICODE_PDF_FORMS).to receive(:fill_form).and_call_original
138+
allow(described_class::PDF_FORMS).to receive(:fill_form).and_call_original
139+
140+
generated_pdf_path = described_class.fill_ancillary_form(form_data, claim_id, form_id)
141+
unicode_text = 'Lorem ‒–—―‖‗‘’‚‛“”„‟′″‴á, é, í, ó, ú, Á, É, Í, Ó, Úñ, Ñ¿, ¡ipsum dolor sit amet'
142+
expect(File).to exist(generated_pdf_path)
143+
expect(described_class::UNICODE_PDF_FORMS).to have_received(:fill_form).with(
144+
template_path, generated_pdf_path, hash_including('F[0].#subform[5].Remarks_If_Any[0]' => unicode_text),
145+
flatten: false
146+
)
147+
148+
expect(described_class::PDF_FORMS).not_to have_received(:fill_form)
149+
150+
File.delete(file_path)
151+
end
152+
end
153+
end
154+
112155
describe '#stamp_form' do
113156
let(:file_path) { 'tmp/test.pdf' }
114157
let(:submit_date) { DateTime.new(2020, 12, 25, 14, 30, 0, '+0000') }

spec/sidekiq/evss/disability_compensation_form/submit_form0781_spec.rb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
let(:evss_claim_id) { 123_456_789 }
2727
let(:saved_claim) { create(:va526ez) }
2828
# contains 0781 and 0781a
29+
let(:saved_claim_with_0781v2) { create(:va526ez_0781v2) }
30+
# contains 0781V2
2931
let(:form0781) do
3032
File.read 'spec/support/disability_compensation_form/submissions/with_0781.json'
3133
end
@@ -103,7 +105,7 @@
103105
Form526Submission.create(user_uuid: user.uuid,
104106
user_account:,
105107
auth_headers_json: auth_headers.to_json,
106-
saved_claim_id: saved_claim.id,
108+
saved_claim_id: saved_claim_with_0781v2.id,
107109
form_json: form0781v2,
108110
submitted_claim_id: evss_claim_id)
109111
end
@@ -707,7 +709,7 @@
707709
Form526Submission.create(user_uuid: user.uuid,
708710
user_account:,
709711
auth_headers_json: auth_headers.to_json,
710-
saved_claim_id: saved_claim.id,
712+
saved_claim_id: saved_claim_with_0781v2.id,
711713
form_json: form0781v2,
712714
submitted_claim_id: evss_claim_id)
713715
end

spec/support/disability_compensation_form/all_claims_with_0781v2_fe_submission.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
"name": "Jane Doe",
4747
"phoneNumber": "1231231231"
4848
},
49-
"isVAEmployee": false,
49+
"isVaEmployee": false,
5050
"militaryRetiredPayBranch": "Air Force",
5151
"needToLeaveHousing": true,
5252
"ratedDisabilities": [

0 commit comments

Comments
 (0)