Commit 1fca0eac authored by Illya Klymov's avatar Illya Klymov

Merge branch '333024-experiment-define-invite-email-preview-text-2' into 'master'

Fix invite join url experiment tracking

See merge request gitlab-org/gitlab!68388
parents 5dbfcb7c 0399c50c
...@@ -20,4 +20,14 @@ module NotifyHelper ...@@ -20,4 +20,14 @@ module NotifyHelper
(source.description || default_description).truncate(200, separator: ' ') (source.description || default_description).truncate(200, separator: ' ')
end end
def invited_join_url(token, member)
additional_params = { invite_type: Emails::Members::INITIAL_INVITE }
if experiment(:invite_email_preview_text, actor: member).enabled?
additional_params[:experiment_name] = 'invite_email_preview_text'
end
invite_url(token, additional_params)
end
end end
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
br_tag: '<br/>'.html_safe, br_tag: '<br/>'.html_safe,
role: member.human_access.downcase } role: member.human_access.downcase }
- join_text = s_('InviteEmail|Join now') - join_text = s_('InviteEmail|Join now')
- join_url = invite_url(@token, invite_type: Emails::Members::INITIAL_INVITE, experiment_name: 'invite_email_preview_text')
- inviter_name = member.created_by.name if member.created_by - inviter_name = member.created_by.name if member.created_by
- experiment(:invite_email_preview_text, actor: member) do |experiment_instance| - experiment(:invite_email_preview_text, actor: member) do |experiment_instance|
...@@ -17,7 +16,7 @@ ...@@ -17,7 +16,7 @@
= s_('InviteEmail|Join your team on GitLab! %{inviter} invited you to %{project_or_group_name}') % { inviter: inviter_name, project_or_group_name: placeholders[:project_or_group_name] } = s_('InviteEmail|Join your team on GitLab! %{inviter} invited you to %{project_or_group_name}') % { inviter: inviter_name, project_or_group_name: placeholders[:project_or_group_name] }
- else - else
= s_('InviteEmail|Join your team on GitLab! You are invited to %{project_or_group_name}') % { project_or_group_name: placeholders[:project_or_group_name] } = s_('InviteEmail|Join your team on GitLab! You are invited to %{project_or_group_name}') % { project_or_group_name: placeholders[:project_or_group_name] }
= gmail_goto_action(join_text, join_url) = gmail_goto_action(join_text, invited_join_url(@token, member))
%tr %tr
%td.text-content{ colspan: 2 } %td.text-content{ colspan: 2 }
...@@ -28,7 +27,7 @@ ...@@ -28,7 +27,7 @@
- else - else
= html_escape(s_("InviteEmail|You are invited to join the %{strong_start}%{project_or_group_name}%{strong_end}%{br_tag}%{project_or_group} as a %{role}")) % placeholders = html_escape(s_("InviteEmail|You are invited to join the %{strong_start}%{project_or_group_name}%{strong_end}%{br_tag}%{project_or_group} as a %{role}")) % placeholders
%p.invite-actions %p.invite-actions
= link_to join_text, join_url, class: 'invite-btn-join' = link_to join_text, invited_join_url(@token, member), class: 'invite-btn-join'
%tr.border-top %tr.border-top
%td.text-content.mailer-align-left.half-width %td.text-content.mailer-align-left.half-width
%h4 %h4
......
...@@ -55,4 +55,31 @@ RSpec.describe NotifyHelper do ...@@ -55,4 +55,31 @@ RSpec.describe NotifyHelper do
def reference_link(entity, url) def reference_link(entity, url)
"<a href=\"#{url}\">#{entity.to_reference}</a>" "<a href=\"#{url}\">#{entity.to_reference}</a>"
end end
describe '#invited_join_url' do
let_it_be(:member) { create(:project_member) }
let(:token) { '_token_' }
context 'when invite_email_preview_text is enabled', :experiment do
before do
stub_experiments(invite_email_preview_text: :control)
end
it 'has correct params' do
expect(helper.invited_join_url(token, member))
.to eq("http://test.host/-/invites/#{token}?experiment_name=invite_email_preview_text&invite_type=initial_email")
end
end
context 'when invite_email_preview_text is disabled' do
before do
stub_feature_flags(invite_email_preview_text: false)
end
it 'has correct params' do
expect(helper.invited_join_url(token, member)).to eq("http://test.host/-/invites/#{token}?invite_type=initial_email")
end
end
end
end end
...@@ -800,8 +800,7 @@ RSpec.describe Notify do ...@@ -800,8 +800,7 @@ RSpec.describe Notify do
is_expected.to have_body_text project_member.invite_token is_expected.to have_body_text project_member.invite_token
is_expected.to have_link('Join now', is_expected.to have_link('Join now',
href: invite_url(project_member.invite_token, href: invite_url(project_member.invite_token,
invite_type: Emails::Members::INITIAL_INVITE, invite_type: Emails::Members::INITIAL_INVITE))
experiment_name: 'invite_email_preview_text'))
is_expected.to have_content("#{inviter.name} invited you to join the") is_expected.to have_content("#{inviter.name} invited you to join the")
is_expected.to have_content('Project details') is_expected.to have_content('Project details')
is_expected.to have_content("What's it about?") is_expected.to have_content("What's it about?")
...@@ -818,13 +817,25 @@ RSpec.describe Notify do ...@@ -818,13 +817,25 @@ RSpec.describe Notify do
is_expected.to have_body_text project_member.invite_token is_expected.to have_body_text project_member.invite_token
is_expected.to have_link('Join now', is_expected.to have_link('Join now',
href: invite_url(project_member.invite_token, href: invite_url(project_member.invite_token,
invite_type: Emails::Members::INITIAL_INVITE, invite_type: Emails::Members::INITIAL_INVITE))
experiment_name: 'invite_email_preview_text'))
is_expected.to have_content('Project details') is_expected.to have_content('Project details')
is_expected.to have_content("What's it about?") is_expected.to have_content("What's it about?")
end end
end end
context 'with invite_email_preview_text enabled', :experiment do
before do
stub_experiments(invite_email_preview_text: :control)
end
it 'has the correct invite_url with params' do
is_expected.to have_link('Join now',
href: invite_url(project_member.invite_token,
invite_type: Emails::Members::INITIAL_INVITE,
experiment_name: 'invite_email_preview_text'))
end
end
context 'when invite email sent is tracked', :snowplow do context 'when invite email sent is tracked', :snowplow do
it 'tracks the sent invite' do it 'tracks the sent invite' do
invite_email.deliver_now invite_email.deliver_now
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment