diff --git a/app/services/proofing/mock/ddp_mock_client.rb b/app/services/proofing/mock/ddp_mock_client.rb index 87221ea6f58..285e14ea6cb 100644 --- a/app/services/proofing/mock/ddp_mock_client.rb +++ b/app/services/proofing/mock/ddp_mock_client.rb @@ -20,9 +20,27 @@ class DdpMockClient < Proofing::Base TRANSACTION_ID = 'ddp-mock-transaction-id-123' + # Trigger the "REJECT" status + REJECT_STATUS_SSN = '666-77-8888' + + # Trigger the "REVIEW" status + REVIEW_STATUS_SSN = '666-77-9999' + + # Trigger a nil status + NIL_STATUS_SSN = '666-77-0000' + proof do |applicant, result| result.transaction_id = TRANSACTION_ID - result.review_status = 'pass' + result.review_status = case SsnFormatter.format(applicant[:ssn]) + when REJECT_STATUS_SSN + 'reject' + when REVIEW_STATUS_SSN + 'review' + when NIL_STATUS_SSN + nil + else + 'pass' + end end end end diff --git a/spec/services/proofing/mock/ddp_mock_client_spec.rb b/spec/services/proofing/mock/ddp_mock_client_spec.rb new file mode 100644 index 00000000000..ee5ae3a21e5 --- /dev/null +++ b/spec/services/proofing/mock/ddp_mock_client_spec.rb @@ -0,0 +1,38 @@ +require 'rails_helper' + +RSpec.describe Proofing::Mock::DdpMockClient do + let(:applicant) { + Idp::Constants::MOCK_IDV_APPLICANT_WITH_SSN.merge(threatmetrix_session_id: 'ABCD-1234') + } + + subject(:instance) { described_class.new } + + describe '#proof' do + subject(:result) { instance.proof(applicant) } + + it 'passes by default' do + expect(result.review_status).to eq('pass') + end + + context 'with magic "reject" SSN' do + let(:applicant) { super().merge(ssn: '666-77-8888') } + it 'fails' do + expect(result.review_status).to eq('reject') + end + end + + context 'with magic "review" SSN' do + let(:applicant) { super().merge(ssn: '666-77-9999') } + it 'fails' do + expect(result.review_status).to eq('review') + end + end + + context 'with magic "nil" SSN' do + let(:applicant) { super().merge(ssn: '666-77-0000') } + it 'fails' do + expect(result.review_status).to be_nil + end + end + end +end