Commit cb3a898f authored by Dallas Reedy's avatar Dallas Reedy

Send new users to Learn GitLab issues board

An experiment where we'll send new users to the Learn GitLab onboarding
issues board once they are done registering.
parent ac0af237
......@@ -14,7 +14,13 @@ module Registrations
if current_user.save
hide_advanced_issues
redirect_to group_path(params[:namespace_path])
record_experiment_user(:default_to_issues_board)
if experiment_enabled?(:default_to_issues_board) && learn_gitlab.available?
redirect_to namespace_project_board_path(params[:namespace_path], learn_gitlab.project, learn_gitlab.board)
else
redirect_to group_path(params[:namespace_path])
end
else
render :show
end
......
......@@ -68,6 +68,9 @@ module Gitlab
},
group_only_trials: {
tracking_category: 'Growth::Conversion::Experiment::GroupOnlyTrials'
},
default_to_issues_board: {
tracking_category: 'Growth::Conversion::Experiment::DefaultToIssuesBoard'
}
}.freeze
......
......@@ -85,16 +85,49 @@ RSpec.describe Registrations::ExperienceLevelsController do
end
end
context 'when a namespace_path is sent' do
it { is_expected.to have_gitlab_http_status(:redirect) }
it { is_expected.to redirect_to(group_path(namespace)) }
end
describe 'redirection' do
let(:project) { build(:project, namespace: namespace, creator: user, path: 'project-path') }
let(:issues_board) { build(:board, id: 123, project: project) }
before do
stub_experiment_for_user(
onboarding_issues: true,
default_to_issues_board: default_to_issues_board_xp?
)
allow_next_instance_of(LearnGitlab) do |learn_gitlab|
allow(learn_gitlab).to receive(:available?).and_return(learn_gitlab_available?)
allow(learn_gitlab).to receive(:project).and_return(project)
allow(learn_gitlab).to receive(:board).and_return(issues_board)
end
end
context 'when namespace_path param is missing' do
let(:params) { super().merge(namespace_path: nil) }
where(
default_to_issues_board_xp?: [true, false],
learn_gitlab_available?: [true, false]
)
context 'when no namespace_path is sent' do
let(:params) { super().merge(namespace_path: nil) }
with_them do
it { is_expected.to redirect_to('/') }
end
end
it { is_expected.to have_gitlab_http_status(:redirect) }
it { is_expected.to redirect_to(root_path) }
context 'when we have a namespace_path param' do
using RSpec::Parameterized::TableSyntax
where(:default_to_issues_board_xp?, :learn_gitlab_available?, :path) do
true | true | '/group-path/project-path/-/boards/123'
true | false | '/group-path'
false | true | '/group-path'
false | false | '/group-path'
end
with_them do
it { is_expected.to redirect_to(path) }
end
end
end
describe 'applying the chosen level' do
......
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