diff --git a/app/controllers/idv/image_uploads_controller.rb b/app/controllers/idv/image_uploads_controller.rb index 58045c87342..5317aec93cf 100644 --- a/app/controllers/idv/image_uploads_controller.rb +++ b/app/controllers/idv/image_uploads_controller.rb @@ -19,11 +19,7 @@ def create liveness_checking_enabled: liveness_checking_enabled?, ) - add_costs(client_response) - analytics.track_event( - Analytics::IDV_DOC_AUTH_SUBMITTED_IMAGE_UPLOAD_VENDOR, - client_response.to_h.merge(user_id: image_form.document_capture_session.user.uuid), - ) + update_analytics(client_response) store_pii(client_response) if client_response.success? status = :bad_request unless client_response.success? @@ -61,6 +57,25 @@ def doc_auth_client @doc_auth_client ||= DocAuthRouter.client end + def update_analytics(client_response) + add_costs(client_response) + update_funnel(client_response) + analytics.track_event( + Analytics::IDV_DOC_AUTH_SUBMITTED_IMAGE_UPLOAD_VENDOR, + client_response.to_h.merge(user_id: image_form.document_capture_session.user.uuid), + ) + end + + def update_funnel(result) + user_id = image_form.document_capture_session.user.id + issuer = sp_session[:issuer] + steps = %i[front_image back_image] + steps << :selfie if liveness_checking_enabled? + steps.each do |step| + Funnel::DocAuth::RegisterStep.new(user_id, issuer).call(step.to_s, :update, result.success?) + end + end + def add_costs(client_response) Db::AddDocumentVerificationAndSelfieCosts. new(user_id: image_form.document_capture_session.user.id, diff --git a/spec/controllers/idv/image_uploads_controller_spec.rb b/spec/controllers/idv/image_uploads_controller_spec.rb index b5e797747a2..360a932f9ef 100644 --- a/spec/controllers/idv/image_uploads_controller_spec.rb +++ b/spec/controllers/idv/image_uploads_controller_spec.rb @@ -15,6 +15,10 @@ } end + before do + Funnel::DocAuth::RegisterStep.new(user.id, '').call('welcome', :view, true) + end + context 'when document capture is not enabled' do before do allow(FeatureManagement).to receive(:document_capture_step_enabled?).and_return(false) @@ -64,6 +68,8 @@ ) action + + expect_funnel_update_counts(user, 0) end end @@ -113,6 +119,8 @@ ) action + + expect_funnel_update_counts(user, 0) end end @@ -168,6 +176,8 @@ ) action + + expect_funnel_update_counts(user, 0) end end @@ -203,6 +213,8 @@ ) action + + expect_funnel_update_counts(user, 1) end end @@ -252,6 +264,8 @@ ) action + + expect_funnel_update_counts(user, 1) end end @@ -295,8 +309,16 @@ ) action + + expect_funnel_update_counts(user, 1) end end end end + + def expect_funnel_update_counts(user, count) + doc_auth_log = DocAuthLog.where(user_id: user.id).first + expect(doc_auth_log.back_image_submit_count).to eq(count) + expect(doc_auth_log.front_image_submit_count).to eq(count) + end end