Skip to content

Commit

Permalink
Track seconds between invitation sent, flow start, and completion
Browse files Browse the repository at this point in the history
This commit adds metadata tracking for the seconds in two intervals:
1. invitation sent and flow start, and
2. flow start and flow completion

Although, these can be reconstituted later from the database timestamps,
it might be best to just send them to NewRelic so we can put them on a
dashboard easily.
  • Loading branch information
tdooner committed Aug 22, 2024
1 parent f314d61 commit a68d72e
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 5 deletions.
3 changes: 2 additions & 1 deletion app/app/controllers/cbv/base_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ def set_cbv_flow
timestamp: Time.now.to_i,
invitation_id: invitation.id,
cbv_flow_id: @cbv_flow.id,
site_id: @cbv_flow.site_id
site_id: @cbv_flow.site_id,
seconds_since_invitation: (Time.now - invitation.created_at).to_i
})

if @cbv_flow.pinwheel_accounts.any?
Expand Down
3 changes: 2 additions & 1 deletion app/app/controllers/cbv/summaries_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,8 @@ def track_transmitted_event(cbv_flow, payments)
account_count: payments.map { |p| p[:account_id] }.uniq.count,
paystub_count: payments.count,
account_count_with_additional_information:
cbv_flow.additional_information.values.count { |info| info["comment"].present? }
cbv_flow.additional_information.values.count { |info| info["comment"].present? },
flow_started_seconds_ago: (Time.now - cbv_flow.created_at).to_i
})
rescue => ex
Rails.logger.error "Failed to track NewRelic event: #{ex.message}"
Expand Down
28 changes: 27 additions & 1 deletion app/spec/controllers/cbv/entries_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,18 @@
end

context "when following a link from a flow invitation" do
let(:invitation) { create(:cbv_flow_invitation, case_number: "ABC1234") }
let(:seconds_since_invitation) { 300 }
let(:invitation) do
create(
:cbv_flow_invitation,
case_number: "ABC1234",
created_at: seconds_since_invitation.seconds.ago
)
end

around do |ex|
Timecop.freeze(&ex)
end

it "renders properly" do
get :show, params: { token: invitation.auth_token }
Expand All @@ -32,6 +43,21 @@
)
end

it "sends a NewRelic event with metadata" do
allow(NewRelicEventTracker).to receive(:track)

get :show, params: { token: invitation.auth_token }
cbv_flow = CbvFlow.find(session[:cbv_flow_id])

expect(NewRelicEventTracker).to have_received(:track).with("ClickedCBVInvitationLink", {
timestamp: be_a(Integer),
invitation_id: invitation.id,
cbv_flow_id: cbv_flow.id,
site_id: invitation.site_id,
seconds_since_invitation: seconds_since_invitation
})
end

context "when returning to an already-visited flow invitation" do
let(:existing_cbv_flow) { create(:cbv_flow, cbv_flow_invitation: invitation) }

Expand Down
12 changes: 10 additions & 2 deletions app/spec/controllers/cbv/summaries_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,20 @@
RSpec.describe Cbv::SummariesController do
include PinwheelApiHelper

let(:cbv_flow) { create(:cbv_flow, case_number: "ABC1234", pinwheel_token_id: "abc-def-ghi") }
let(:flow_started_seconds_ago) { 300 }
let(:cbv_flow) do
create(:cbv_flow, case_number: "ABC1234", pinwheel_token_id: "abc-def-ghi", created_at: flow_started_seconds_ago.seconds.ago)
end
let(:cbv_flow_invitation) { cbv_flow.cbv_flow_invitation }

before do
session[:cbv_flow_invitation] = cbv_flow_invitation
end

around do |ex|
Timecop.freeze(&ex)
end

describe "#show" do
before do
cbv_flow_invitation.update(snap_application_date: Date.parse('2024-06-18'))
Expand Down Expand Up @@ -150,7 +157,8 @@
cbv_flow_id: cbv_flow.id,
account_count: 1,
paystub_count: 1,
account_count_with_additional_information: 0
account_count_with_additional_information: 0,
flow_started_seconds_ago: flow_started_seconds_ago
})
end
end
Expand Down

0 comments on commit a68d72e

Please sign in to comment.