diff options
Diffstat (limited to 'spec/features/projects/members/user_requests_access_spec.rb')
-rw-r--r-- | spec/features/projects/members/user_requests_access_spec.rb | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/spec/features/projects/members/user_requests_access_spec.rb b/spec/features/projects/members/user_requests_access_spec.rb index e7f99a4048c..14df7e7bafe 100644 --- a/spec/features/projects/members/user_requests_access_spec.rb +++ b/spec/features/projects/members/user_requests_access_spec.rb @@ -10,6 +10,9 @@ RSpec.describe 'Projects > Members > User requests access', :js, feature_categor let_it_be(:project) { create(:project, :public, :repository) } let(:owner) { project.first_owner } + let(:more_actions_dropdown) do + find('[data-testid="groups-projects-more-actions-dropdown"] .gl-new-dropdown-custom-toggle') + end before do sign_in(user) @@ -17,39 +20,46 @@ RSpec.describe 'Projects > Members > User requests access', :js, feature_categor visit project_path(project) end - it 'request access feature is disabled' do + it 'request access feature is disabled', :js do project.update!(request_access_enabled: false) visit project_path(project) + more_actions_dropdown.click expect(page).not_to have_content 'Request Access' end - it 'user can request access to a project' do - perform_enqueued_jobs { click_link 'Request Access' } + it 'user can request access to a project', :js do + perform_enqueued_jobs do + more_actions_dropdown.click + click_link 'Request Access' + end expect(ActionMailer::Base.deliveries.map(&:to)).to match_array([[owner.notification_email_or_default], [maintainer.notification_email_or_default]]) expect(ActionMailer::Base.deliveries.last.subject).to eq "Request to join the #{project.full_name} project" expect(project.requesters.exists?(user_id: user)).to be_truthy + more_actions_dropdown.click expect(page).to have_content 'Withdraw Access Request' expect(page).not_to have_content 'Leave Project' end context 'code access is restricted' do - it 'user can request access' do + it 'user can request access', :js do project.project_feature.update!( repository_access_level: ProjectFeature::PRIVATE, builds_access_level: ProjectFeature::PRIVATE, merge_requests_access_level: ProjectFeature::PRIVATE ) visit project_path(project) + more_actions_dropdown.click expect(page).to have_content 'Request Access' end end - it 'user is not listed in the project members page' do + it 'user is not listed in the project members page', :js do + more_actions_dropdown.click click_link 'Request Access' expect(project.requesters.exists?(user_id: user)).to be_truthy @@ -64,13 +74,16 @@ RSpec.describe 'Projects > Members > User requests access', :js, feature_categor end end - it 'user can withdraw its request for access' do + it 'user can withdraw its request for access', :js do + more_actions_dropdown.click click_link 'Request Access' expect(project.requesters.exists?(user_id: user)).to be_truthy + more_actions_dropdown.click accept_gl_confirm { click_link 'Withdraw Access Request' } + more_actions_dropdown.click expect(page).not_to have_content 'Withdraw Access Request' expect(page).to have_content 'Request Access' end |