Commit 55d77769 authored by Paul Slaughter's avatar Paul Slaughter

Show Web IDE button even if MRs are not available

**Note:**
- Adds feature specs and updates unit tests for this
  so that we can test this at the use case level +
  when the vue file list is fully enabled.
parent 1fc8efd1
...@@ -84,14 +84,13 @@ ...@@ -84,14 +84,13 @@
= render 'projects/find_file_link' = render 'projects/find_file_link'
- if can_create_mr_from_fork
- if can_collaborate || current_user&.already_forked?(@project) - if can_collaborate || current_user&.already_forked?(@project)
- if vue_file_list_enabled? - if vue_file_list_enabled?
#js-tree-web-ide-link.d-inline-block #js-tree-web-ide-link.d-inline-block
- else - else
= link_to ide_edit_path(@project, @ref, @path), class: 'btn btn-default qa-web-ide-button' do = link_to ide_edit_path(@project, @ref, @path), class: 'btn btn-default qa-web-ide-button' do
= _('Web IDE') = _('Web IDE')
- else - elsif can_create_mr_from_fork
= link_to '#modal-confirm-fork', class: 'btn btn-default qa-web-ide-button', data: { target: '#modal-confirm-fork', toggle: 'modal'} do = link_to '#modal-confirm-fork', class: 'btn btn-default qa-web-ide-button', data: { target: '#modal-confirm-fork', toggle: 'modal'} do
= _('Web IDE') = _('Web IDE')
= render 'shared/confirm_fork_modal', fork_path: ide_fork_and_edit_path(@project, @ref, @path) = render 'shared/confirm_fork_modal', fork_path: ide_fork_and_edit_path(@project, @ref, @path)
......
...@@ -3,14 +3,20 @@ ...@@ -3,14 +3,20 @@
require 'spec_helper' require 'spec_helper'
describe 'Projects > Show > Collaboration links', :js do 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) } let(:user) { create(:user) }
before do before do
project.add_developer(user)
sign_in(user) sign_in(user)
end end
context 'with developer user' do
before do
project.add_developer(user)
end
it 'shows all the expected links' do it 'shows all the expected links' do
visit project_path(project) visit project_path(project)
...@@ -65,4 +71,28 @@ describe 'Projects > Show > Collaboration links', :js do ...@@ -65,4 +71,28 @@ describe 'Projects > Show > Collaboration links', :js do
expect(page).not_to have_link('Web IDE') expect(page).not_to have_link('Web IDE')
end end
end
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
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 end
...@@ -19,12 +19,12 @@ describe 'projects/tree/_tree_header' do ...@@ -19,12 +19,12 @@ describe 'projects/tree/_tree_header' do
allow(view).to receive(:can_collaborate_with_project?) { true } allow(view).to receive(:can_collaborate_with_project?) { true }
end end
it 'does not render the WebIDE button when user cannot create fork or cannot open MR' do it 'renders the WebIDE button when user can collaborate but not create fork or MR' do
allow(view).to receive(:can?) { false } allow(view).to receive(:can?) { false }
render render
expect(rendered).not_to have_link('Web IDE') expect(rendered).to have_link('Web IDE')
end end
it 'renders the WebIDE button when user can create fork and can open MR in project' do it 'renders the WebIDE button when user can create fork and can open MR in project' do
...@@ -43,4 +43,13 @@ describe 'projects/tree/_tree_header' do ...@@ -43,4 +43,13 @@ describe 'projects/tree/_tree_header' do
expect(rendered).to have_link('Web IDE', href: '#modal-confirm-fork') expect(rendered).to have_link('Web IDE', href: '#modal-confirm-fork')
end end
it 'does not render the WebIDE button when user cannot collaborate or create mr' do
allow(view).to receive(:can?) { false }
allow(view).to receive(:can_collaborate_with_project?) { false }
render
expect(rendered).not_to have_link('Web IDE')
end
end end
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