diff --git a/app/services/irs_attempts_api/tracker.rb b/app/services/irs_attempts_api/tracker.rb index 3fad80afb5d..dc9dbed7c76 100644 --- a/app/services/irs_attempts_api/tracker.rb +++ b/app/services/irs_attempts_api/tracker.rb @@ -17,6 +17,12 @@ def initialize(session_id:, request:, user:, sp:, cookie_device_uuid:, def track_event(event_type, metadata = {}) return unless enabled? + if metadata.has_key?(:failure_reason) && + (metadata[:failure_reason].blank? || + metadata[:success].present?) + metadata.delete(:failure_reason) + end + event_metadata = { user_agent: request&.user_agent, unique_session_id: hashed_session_id, diff --git a/spec/services/irs_attempts_api/tracker_spec.rb b/spec/services/irs_attempts_api/tracker_spec.rb index 85e9bd860c9..55f8cc8e012 100644 --- a/spec/services/irs_attempts_api/tracker_spec.rb +++ b/spec/services/irs_attempts_api/tracker_spec.rb @@ -34,6 +34,28 @@ end describe '#track_event' do + it 'omit failure reason when success is true' do + freeze_time do + event = subject.track_event(:test_event, foo: :bar, success: true, failure_reason: nil) + expect(event.event_metadata).to_not have_key(:failure_reason) + end + end + it 'omit failure reason when failure_reason is blank' do + freeze_time do + event = subject.track_event(:test_event, foo: :bar, failure_reason: nil) + expect(event.event_metadata).to_not have_key(:failure_reason) + end + end + it 'should not omit failure reason when success is false and failure_reason is not blank' do + freeze_time do + event = subject.track_event( + :test_event, foo: :bar, success: false, + failure_reason: { foo: [:bar] } + ) + expect(event.event_metadata).to have_key(:failure_reason) + expect(event.event_metadata).to have_key(:success) + end + end it 'records the event in redis' do freeze_time do subject.track_event(:test_event, foo: :bar)