diff --git a/app/controllers/idv/cancellations_controller.rb b/app/controllers/idv/cancellations_controller.rb index 079ef33c975..6b2fa99a852 100644 --- a/app/controllers/idv/cancellations_controller.rb +++ b/app/controllers/idv/cancellations_controller.rb @@ -6,7 +6,8 @@ class CancellationsController < ApplicationController before_action :confirm_idv_needed def new - analytics.track_event(Analytics::IDV_CANCELLATION) + properties = ParseControllerFromReferer.new(request.referer).call + analytics.track_event(Analytics::IDV_CANCELLATION, properties) @presenter = CancellationPresenter.new(view_context: view_context) end diff --git a/app/controllers/idv/come_back_later_controller.rb b/app/controllers/idv/come_back_later_controller.rb index eed99414149..cd46a611f74 100644 --- a/app/controllers/idv/come_back_later_controller.rb +++ b/app/controllers/idv/come_back_later_controller.rb @@ -4,7 +4,9 @@ class ComeBackLaterController < ApplicationController before_action :confirm_user_needs_usps_confirmation - def show; end + def show + analytics.track_event(Analytics::IDV_COME_BACK_LATER_VISIT) + end private diff --git a/app/controllers/idv/sessions_controller.rb b/app/controllers/idv/sessions_controller.rb index 660a261c37a..4c9ae33a16e 100644 --- a/app/controllers/idv/sessions_controller.rb +++ b/app/controllers/idv/sessions_controller.rb @@ -16,10 +16,10 @@ class SessionsController < ApplicationController delegate :attempts_exceeded?, to: :step, prefix: true def new + analytics.track_event(Analytics::IDV_BASIC_INFO_VISIT) user_session[:context] = 'idv' set_idv_form @selected_state = user_session[:idv_jurisdiction] - analytics.track_event(Analytics::IDV_BASIC_INFO_VISIT) end def create diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index afc0fec3c8b..dbc27e88ecb 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -10,10 +10,7 @@ def destroy private def track_account_deletion_event - controller_and_action_from_referer = ParseControllerFromReferer.new(request.referer).call - properties = { - request_came_from: controller_and_action_from_referer, - } + properties = ParseControllerFromReferer.new(request.referer).call analytics.track_event(Analytics::ACCOUNT_DELETION, properties) end diff --git a/app/services/analytics.rb b/app/services/analytics.rb index de4444d0039..26a4dfe5f8e 100644 --- a/app/services/analytics.rb +++ b/app/services/analytics.rb @@ -64,6 +64,7 @@ def browser IDV_BASIC_INFO_SUBMITTED_VENDOR = 'IdV: basic info vendor submitted'.freeze IDV_CANCELLATION = 'IdV: cancellation visited'.freeze IDV_CANCELLATION_CONFIRMED = 'IdV: cancellation confirmed'.freeze + IDV_COME_BACK_LATER_VISIT = 'IdV: come back later visited'.freeze IDV_MAX_ATTEMPTS_EXCEEDED = 'IdV: max attempts exceeded'.freeze IDV_FINAL = 'IdV: final resolution'.freeze IDV_INTRO_VISIT = 'IdV: intro visited'.freeze diff --git a/app/services/parse_controller_from_referer.rb b/app/services/parse_controller_from_referer.rb index 3b4dc6b9a45..2558d5b3544 100644 --- a/app/services/parse_controller_from_referer.rb +++ b/app/services/parse_controller_from_referer.rb @@ -4,9 +4,7 @@ def initialize(referer) end def call - return 'no referer' if referer.nil? - - controller_and_action_from_referer + { request_came_from: controller_and_action_from_referer } end private @@ -14,6 +12,7 @@ def call attr_reader :referer def controller_and_action_from_referer + return 'no referer' if referer.nil? "#{controller_that_made_the_request}##{controller_action}" end diff --git a/spec/controllers/idv/cancellations_controller_spec.rb b/spec/controllers/idv/cancellations_controller_spec.rb index bce4eb261f2..63b46b4693e 100644 --- a/spec/controllers/idv/cancellations_controller_spec.rb +++ b/spec/controllers/idv/cancellations_controller_spec.rb @@ -2,11 +2,23 @@ describe Idv::CancellationsController do describe '#new' do - it 'tracks an analytics event' do + it 'tracks the event in analytics when referer is nil' do + stub_sign_in + stub_analytics + properties = { request_came_from: 'no referer' } + + expect(@analytics).to receive(:track_event).with(Analytics::IDV_CANCELLATION, properties) + + get :new + end + + it 'tracks the event in analytics when referer is present' do stub_sign_in stub_analytics + request.env['HTTP_REFERER'] = 'http://example.com/' + properties = { request_came_from: 'users/sessions#new' } - expect(@analytics).to receive(:track_event).with(Analytics::IDV_CANCELLATION) + expect(@analytics).to receive(:track_event).with(Analytics::IDV_CANCELLATION, properties) get :new end diff --git a/spec/controllers/idv/come_back_later_controller_spec.rb b/spec/controllers/idv/come_back_later_controller_spec.rb index 3a343197eaf..c41961ec024 100644 --- a/spec/controllers/idv/come_back_later_controller_spec.rb +++ b/spec/controllers/idv/come_back_later_controller_spec.rb @@ -14,6 +14,10 @@ context 'user needs USPS address verification' do it 'renders the show template' do + stub_analytics + + expect(@analytics).to receive(:track_event).with(Analytics::IDV_COME_BACK_LATER_VISIT) + get :show expect(response).to render_template :show diff --git a/spec/controllers/users_controller_spec.rb b/spec/controllers/users_controller_spec.rb index 828f8076c20..70a196645da 100644 --- a/spec/controllers/users_controller_spec.rb +++ b/spec/controllers/users_controller_spec.rb @@ -58,7 +58,7 @@ parser = instance_double(ParseControllerFromReferer) expect(ParseControllerFromReferer).to receive(:new).and_return(parser) - expect(parser).to receive(:call) + expect(parser).to receive(:call).and_return({}) delete :destroy end diff --git a/spec/services/parse_controller_from_referer_spec.rb b/spec/services/parse_controller_from_referer_spec.rb index 680825808b4..e39533bfc85 100644 --- a/spec/services/parse_controller_from_referer_spec.rb +++ b/spec/services/parse_controller_from_referer_spec.rb @@ -5,16 +5,18 @@ context 'when the referer is nil' do it 'returns "no referer" string' do parser = ParseControllerFromReferer.new(nil) + result = { request_came_from: 'no referer' } - expect(parser.call).to eq 'no referer' + expect(parser.call).to eq result end end context 'when the referer is present' do it 'returns the corresponding controller and action' do parser = ParseControllerFromReferer.new('http://example.com/') + result = { request_came_from: 'users/sessions#new' } - expect(parser.call).to eq 'users/sessions#new' + expect(parser.call).to eq result end end end