diff --git a/ee/app/helpers/ee/registrations_helper.rb b/ee/app/helpers/ee/registrations_helper.rb index 2d42b01db09051614380fe170da0b028d39a8767..bb2baccc6a467b411e0ace146576fed8e86e2aec 100644 --- a/ee/app/helpers/ee/registrations_helper.rb +++ b/ee/app/helpers/ee/registrations_helper.rb @@ -61,6 +61,10 @@ def onboarding_issues_experiment_enabled? experiment_enabled?(:onboarding_issues) end + def skip_setup_for_company? + current_user.members.any? + end + private def redirect_path diff --git a/ee/app/views/registrations/welcome/_setup_for_company.html.haml b/ee/app/views/registrations/welcome/_setup_for_company.html.haml index 86b43a6799277e73e270128f91174c2c19d5d33f..530dd772ff271180ca1bc3d30a05c0aa466fab0c 100644 --- a/ee/app/views/registrations/welcome/_setup_for_company.html.haml +++ b/ee/app/views/registrations/welcome/_setup_for_company.html.haml @@ -1,4 +1,8 @@ -- if Gitlab.com? +- return unless Gitlab.dev_env_or_com? + +- if skip_setup_for_company? + = f.hidden_field :setup_for_company, value: true +- else .row .form-group.col-sm-12 = f.label :setup_for_company, setup_for_company_label_text, class: 'label-bold' diff --git a/ee/changelogs/unreleased/221028-skip-the-who-will-be-using-gitlab-question-in-signup-when-a-use.yml b/ee/changelogs/unreleased/221028-skip-the-who-will-be-using-gitlab-question-in-signup-when-a-use.yml new file mode 100644 index 0000000000000000000000000000000000000000..5b60edf847a88b888c0c3da29f02e120048a4e2a --- /dev/null +++ b/ee/changelogs/unreleased/221028-skip-the-who-will-be-using-gitlab-question-in-signup-when-a-use.yml @@ -0,0 +1,5 @@ +--- +title: Skip the who will be using GitLab question in signup when a user is invited +merge_request: 42264 +author: +type: changed diff --git a/ee/spec/features/invites_spec.rb b/ee/spec/features/invites_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..7531450716c2792de2a874d320394f3cd1ce680d --- /dev/null +++ b/ee/spec/features/invites_spec.rb @@ -0,0 +1,56 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'Group or Project invitations' do + let(:group) { create(:group, name: 'Owned') } + let(:project) { create(:project, :repository, namespace: group) } + let(:group_invite) { create(:group_member, :invited, group: group) } + let(:new_user) { build_stubbed(:user, email: group_invite.invite_email) } + let(:dev_env_or_com) { true } + + before do + allow(::Gitlab).to receive(:dev_env_or_com?).and_return(dev_env_or_com) + + visit invite_path(group_invite.raw_invite_token) + end + + def fill_in_sign_up_form(user) + fill_in 'new_user_name', with: user.name + fill_in 'new_user_username', with: user.username + fill_in 'new_user_email', with: user.email + fill_in 'new_user_password', with: user.password + click_button 'Register' + end + + context 'when on .com' do + context 'without setup question' do + it 'bypasses the setup_for_company question' do + fill_in_sign_up_form(new_user) + + expect(find('input[name="user[setup_for_company]"]', visible: :hidden).value).to eq 'true' + expect(page).not_to have_content('My company or team') + end + end + + context 'with setup question' do + let(:new_user) { build_stubbed(:user, email: 'bogus@me.com') } + + it 'has the setup question' do + fill_in_sign_up_form(new_user) + + expect(page).to have_content('My company or team') + end + end + end + + context 'when not on .com' do + let(:dev_env_or_com) { false } + + it 'bypasses the setup_for_company question' do + fill_in_sign_up_form(new_user) + + expect(page).not_to have_content('My company or team') + end + end +end diff --git a/ee/spec/helpers/ee/registrations_helper_spec.rb b/ee/spec/helpers/ee/registrations_helper_spec.rb index 23facd1460a969e4648d7174d0a802a4de2b4841..ff9155cee610efa6d5aaac86240f3d896a69662f 100644 --- a/ee/spec/helpers/ee/registrations_helper_spec.rb +++ b/ee/spec/helpers/ee/registrations_helper_spec.rb @@ -244,4 +244,23 @@ end end end + + describe '#skip_setup_for_company?' do + let(:user) { create(:user) } + + before do + allow(helper).to receive(:current_user).and_return(user) + end + + it 'will skip the setup if memberships are found' do + member = create(:project_member, :invited) + member.accept_invite!(user) + + expect(helper.skip_setup_for_company?).to be true + end + + it 'will not skip the setup when a user has no memberships' do + expect(helper.skip_setup_for_company?).to be false + end + end end diff --git a/spec/features/invites_spec.rb b/spec/features/invites_spec.rb index 26b9b398692b252dfaa6db9d8cdda814708296c4..3954de56eea06108aabf70a1f5abf2c285f5d7fb 100644 --- a/spec/features/invites_spec.rb +++ b/spec/features/invites_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Invites', :aggregate_failures do +RSpec.describe 'Group or Project invitations', :aggregate_failures do let(:user) { create(:user, email: 'user@example.com') } let(:owner) { create(:user, name: 'John Doe') } let(:group) { create(:group, name: 'Owned') }