From a52a06223d9e85c9ad0a27d1ddfb2b2a164b3614 Mon Sep 17 00:00:00 2001
From: Nicolas Dular <ndular@gitlab.com>
Date: Thu, 27 Aug 2020 16:31:00 +0200
Subject: [PATCH] Fix snowplow tracking event error

The `value` property on Snowplow only accepts Numbers or nil
values. This fixes the problem by using the `label` property
instead which accepts Strings as well.
---
 app/controllers/invites_controller.rb         |  2 +-
 .../nicolasdular-fix-invite-mail-tracking.yml |  5 ++++
 spec/controllers/invites_controller_spec.rb   | 25 ++++++++++---------
 3 files changed, 19 insertions(+), 13 deletions(-)
 create mode 100644 changelogs/unreleased/nicolasdular-fix-invite-mail-tracking.yml

diff --git a/app/controllers/invites_controller.rb b/app/controllers/invites_controller.rb
index 1126d72bfef..aa02bc132f9 100644
--- a/app/controllers/invites_controller.rb
+++ b/app/controllers/invites_controller.rb
@@ -108,7 +108,7 @@ class InvitesController < ApplicationController
       Gitlab::Experimentation::EXPERIMENTS[:invite_email][:tracking_category],
       action,
       property: property,
-      value: Digest::MD5.hexdigest(member.to_global_id.to_s)
+      label: Digest::MD5.hexdigest(member.to_global_id.to_s)
     )
   end
 end
diff --git a/changelogs/unreleased/nicolasdular-fix-invite-mail-tracking.yml b/changelogs/unreleased/nicolasdular-fix-invite-mail-tracking.yml
new file mode 100644
index 00000000000..919a3e02bdc
--- /dev/null
+++ b/changelogs/unreleased/nicolasdular-fix-invite-mail-tracking.yml
@@ -0,0 +1,5 @@
+---
+title: Fix snowplow tracking event error for new user invite page
+merge_request: 40628
+author:
+type: fixed
diff --git a/spec/controllers/invites_controller_spec.rb b/spec/controllers/invites_controller_spec.rb
index fa9ec7413f8..a069a5dc050 100644
--- a/spec/controllers/invites_controller_spec.rb
+++ b/spec/controllers/invites_controller_spec.rb
@@ -10,6 +10,7 @@ RSpec.describe InvitesController do
   let(:md5_member_global_id) { Digest::MD5.hexdigest(member.to_global_id.to_s) }
 
   before do
+    stub_application_setting(snowplow_enabled: true, snowplow_collector_hostname: 'localhost')
     controller.instance_variable_set(:@member, member)
     sign_in(user)
   end
@@ -51,17 +52,17 @@ RSpec.describe InvitesController do
       let(:params) { { id: token, new_user_invite: 'experiment' } }
 
       it 'tracks the user as experiment group' do
-        expect(Gitlab::Tracking).to receive(:event).with(
+        expect(Gitlab::Tracking).to receive(:event).and_call_original.with(
           'Growth::Acquisition::Experiment::InviteEmail',
           'opened',
           property: 'experiment_group',
-          value: md5_member_global_id
+          label: md5_member_global_id
         )
-        expect(Gitlab::Tracking).to receive(:event).with(
+        expect(Gitlab::Tracking).to receive(:event).and_call_original.with(
           'Growth::Acquisition::Experiment::InviteEmail',
           'accepted',
           property: 'experiment_group',
-          value: md5_member_global_id
+          label: md5_member_global_id
         )
 
         request
@@ -72,17 +73,17 @@ RSpec.describe InvitesController do
       let(:params) { { id: token, new_user_invite: 'control' } }
 
       it 'tracks the user as control group' do
-        expect(Gitlab::Tracking).to receive(:event).with(
+        expect(Gitlab::Tracking).to receive(:event).and_call_original.with(
           'Growth::Acquisition::Experiment::InviteEmail',
           'opened',
           property: 'control_group',
-          value: md5_member_global_id
+          label: md5_member_global_id
         )
-        expect(Gitlab::Tracking).to receive(:event).with(
+        expect(Gitlab::Tracking).to receive(:event).and_call_original.with(
           'Growth::Acquisition::Experiment::InviteEmail',
           'accepted',
           property: 'control_group',
-          value: md5_member_global_id
+          label: md5_member_global_id
         )
 
         request
@@ -107,11 +108,11 @@ RSpec.describe InvitesController do
       let(:params) { { id: token, new_user_invite: 'experiment' } }
 
       it 'tracks the user as experiment group' do
-        expect(Gitlab::Tracking).to receive(:event).with(
+        expect(Gitlab::Tracking).to receive(:event).and_call_original.with(
           'Growth::Acquisition::Experiment::InviteEmail',
           'accepted',
           property: 'experiment_group',
-          value: md5_member_global_id
+          label: md5_member_global_id
         )
 
         request
@@ -122,11 +123,11 @@ RSpec.describe InvitesController do
       let(:params) { { id: token, new_user_invite: 'control' } }
 
       it 'tracks the user as control group' do
-        expect(Gitlab::Tracking).to receive(:event).with(
+        expect(Gitlab::Tracking).to receive(:event).and_call_original.with(
           'Growth::Acquisition::Experiment::InviteEmail',
           'accepted',
           property: 'control_group',
-          value: md5_member_global_id
+          label: md5_member_global_id
         )
 
         request
-- 
2.30.9