diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-14 18:09:08 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-14 18:09:08 +0300 |
commit | b3a736ed88a1db0391cd9881e70b987bab7d89d1 (patch) | |
tree | a91ca3a06abd4c3412775ac3c49b11e3151df2be /spec/features/projects/show/user_sees_collaboration_links_spec.rb | |
parent | 5366964a10484c2783a646b35a6da9eece01b242 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/features/projects/show/user_sees_collaboration_links_spec.rb')
-rw-r--r-- | spec/features/projects/show/user_sees_collaboration_links_spec.rb | 106 |
1 files changed, 68 insertions, 38 deletions
diff --git a/spec/features/projects/show/user_sees_collaboration_links_spec.rb b/spec/features/projects/show/user_sees_collaboration_links_spec.rb index ff133b58f89..63fcec4f9b3 100644 --- a/spec/features/projects/show/user_sees_collaboration_links_spec.rb +++ b/spec/features/projects/show/user_sees_collaboration_links_spec.rb @@ -3,66 +3,96 @@ require 'spec_helper' describe 'Projects > Show > Collaboration links', :js do - let(:project) { create(:project, :repository) } + using RSpec::Parameterized::TableSyntax + + let(:project) { create(:project, :repository, :public) } let(:user) { create(:user) } before do - project.add_developer(user) sign_in(user) end - it 'shows all the expected links' do - visit project_path(project) + context 'with developer user' do + before do + project.add_developer(user) + end - # The navigation bar - page.within('.header-new') do - find('.qa-new-menu-toggle').click + it 'shows all the expected links' do + visit project_path(project) - aggregate_failures 'dropdown links in the navigation bar' do - expect(page).to have_link('New issue') - expect(page).to have_link('New merge request') - expect(page).to have_link('New snippet', href: new_project_snippet_path(project)) - end + # The navigation bar + page.within('.header-new') do + find('.qa-new-menu-toggle').click - find('.qa-new-menu-toggle').click - end + aggregate_failures 'dropdown links in the navigation bar' do + expect(page).to have_link('New issue') + expect(page).to have_link('New merge request') + expect(page).to have_link('New snippet', href: new_project_snippet_path(project)) + end - # The dropdown above the tree - page.within('.repo-breadcrumb') do - find('.qa-add-to-tree').click + find('.qa-new-menu-toggle').click + end - aggregate_failures 'dropdown links above the repo tree' do - expect(page).to have_link('New file') - expect(page).to have_link('Upload file') - expect(page).to have_link('New directory') - expect(page).to have_link('New branch') - expect(page).to have_link('New tag') + # The dropdown above the tree + page.within('.repo-breadcrumb') do + find('.qa-add-to-tree').click + + aggregate_failures 'dropdown links above the repo tree' do + expect(page).to have_link('New file') + expect(page).to have_link('Upload file') + expect(page).to have_link('New directory') + expect(page).to have_link('New branch') + expect(page).to have_link('New tag') + end end + + # The Web IDE + expect(page).to have_link('Web IDE') end - # The Web IDE - expect(page).to have_link('Web IDE') - end + it 'hides the links when the project is archived' do + project.update!(archived: true) - it 'hides the links when the project is archived' do - project.update!(archived: true) + visit project_path(project) - visit project_path(project) + page.within('.header-new') do + find('.qa-new-menu-toggle').click - page.within('.header-new') do - find('.qa-new-menu-toggle').click + aggregate_failures 'dropdown links' do + expect(page).not_to have_link('New issue') + expect(page).not_to have_link('New merge request') + expect(page).not_to have_link('New snippet', href: new_project_snippet_path(project)) + end - aggregate_failures 'dropdown links' do - expect(page).not_to have_link('New issue') - expect(page).not_to have_link('New merge request') - expect(page).not_to have_link('New snippet', href: new_project_snippet_path(project)) + find('.qa-new-menu-toggle').click end - find('.qa-new-menu-toggle').click + expect(page).not_to have_selector('.qa-add-to-tree') + + expect(page).not_to have_link('Web IDE') end + end - expect(page).not_to have_selector('.qa-add-to-tree') + context "Web IDE link" do + where(:merge_requests_access_level, :user_level, :expect_ide_link) do + ::ProjectFeature::DISABLED | :guest | false + ::ProjectFeature::DISABLED | :developer | true + ::ProjectFeature::PRIVATE | :guest | false + ::ProjectFeature::PRIVATE | :developer | true + ::ProjectFeature::ENABLED | :guest | true + ::ProjectFeature::ENABLED | :developer | true + end - expect(page).not_to have_link('Web IDE') + with_them do + before do + project.project_feature.update!({ merge_requests_access_level: merge_requests_access_level }) + project.add_user(user, user_level) + visit project_path(project) + end + + it "updates Web IDE link" do + expect(page.has_link?('Web IDE')).to be(expect_ide_link) + end + end end end |