diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-12-03 21:10:10 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-12-03 21:10:10 +0300 |
commit | c2a6cc86754adb3c5e064cebc58d206a52cb412e (patch) | |
tree | 3960c9ae2590e89e25193a0006e84d06f900e378 /spec/features/issuables | |
parent | bbd9e2c915c46920ceb51376db19599cbf9ba836 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/features/issuables')
-rw-r--r-- | spec/features/issuables/close_reopen_report_toggle_spec.rb | 141 | ||||
-rw-r--r-- | spec/features/issuables/merge_request_discussion_lock_spec.rb | 79 |
2 files changed, 0 insertions, 220 deletions
diff --git a/spec/features/issuables/close_reopen_report_toggle_spec.rb b/spec/features/issuables/close_reopen_report_toggle_spec.rb deleted file mode 100644 index 30cabce8fa2..00000000000 --- a/spec/features/issuables/close_reopen_report_toggle_spec.rb +++ /dev/null @@ -1,141 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe 'Issuables Close/Reopen/Report toggle' do - include IssuablesHelper - - let(:user) { create(:user) } - - shared_examples 'an issuable close/reopen/report toggle' do - let(:container) { find('.issuable-close-dropdown') } - let(:human_model_name) { issuable.model_name.human.downcase } - - it 'shows toggle' do - expect(page).to have_button("Close #{human_model_name}") - expect(page).to have_selector('.issuable-close-dropdown') - end - - it 'opens a dropdown when toggle is clicked' do - container.find('.dropdown-toggle').click - - expect(container).to have_selector('.dropdown-menu') - expect(container).to have_content("Close #{human_model_name}") - expect(container).to have_content('Report abuse') - expect(container).to have_content("Report #{human_model_name.pluralize} that are abusive, inappropriate or spam.") - - if issuable.is_a?(MergeRequest) - page.within('.js-issuable-close-dropdown') do - expect(page).to have_link('Close merge request') - end - else - expect(container).to have_selector('.close-item.droplab-item-selected') - end - - expect(container).to have_selector('.report-item') - expect(container).not_to have_selector('.report-item.droplab-item-selected') - expect(container).not_to have_selector('.reopen-item') - end - - it 'links to Report Abuse' do - container.find('.dropdown-toggle').click - container.find('.report-abuse-link').click - - expect(page).to have_content('Report abuse to admin') - end - end - - context 'on a merge request' do - let(:container) { find('.detail-page-header-actions') } - let(:project) { create(:project, :repository) } - let(:issuable) { create(:merge_request, source_project: project) } - - before do - project.add_maintainer(user) - login_as user - end - - context 'when user has permission to update', :js do - before do - visit project_merge_request_path(project, issuable) - end - - it_behaves_like 'an issuable close/reopen/report toggle' - - context 'when the merge request is open' do - let(:issuable) { create(:merge_request, :opened, source_project: project) } - - it 'shows the `Edit` and `Mark as draft` buttons' do - expect(container).to have_link('Edit') - expect(container).to have_link('Mark as draft') - expect(container).not_to have_button('Report abuse') - expect(container).not_to have_button('Close merge request') - expect(container).not_to have_link('Reopen merge request') - end - end - - context 'when the merge request is closed' do - let(:issuable) { create(:merge_request, :closed, source_project: project) } - - it 'shows both the `Edit` and `Reopen` button' do - expect(container).to have_link('Edit') - expect(container).not_to have_button('Report abuse') - expect(container).not_to have_button('Close merge request') - expect(container).to have_link('Reopen merge request') - end - - context 'when the merge request author is the current user' do - let(:issuable) { create(:merge_request, :closed, source_project: project, author: user) } - - it 'shows both the `Edit` and `Reopen` button' do - expect(container).to have_link('Edit') - expect(container).not_to have_link('Report abuse') - expect(container).not_to have_selector('button.dropdown-toggle') - expect(container).not_to have_button('Close merge request') - expect(container).to have_link('Reopen merge request') - end - end - end - - context 'when the merge request is merged' do - let(:issuable) { create(:merge_request, :merged, source_project: project) } - - it 'shows only the `Edit` button' do - expect(container).to have_link(exact_text: 'Edit') - expect(container).not_to have_link('Report abuse') - expect(container).not_to have_button('Close merge request') - expect(container).not_to have_button('Reopen merge request') - end - - context 'when the merge request author is the current user' do - let(:issuable) { create(:merge_request, :merged, source_project: project, author: user) } - - it 'shows only the `Edit` button' do - expect(container).to have_link(exact_text: 'Edit') - expect(container).not_to have_link('Report abuse') - expect(container).not_to have_button('Close merge request') - expect(container).not_to have_button('Reopen merge request') - end - end - end - end - - context 'when user doesnt have permission to update' do - let(:cant_project) { create(:project, :repository) } - let(:cant_issuable) { create(:merge_request, source_project: cant_project) } - - before do - cant_project.add_reporter(user) - - visit project_merge_request_path(cant_project, cant_issuable) - end - - it 'only shows a `Report abuse` button' do - expect(container).to have_link('Report abuse') - expect(container).not_to have_button('Close merge request') - expect(container).not_to have_button('Reopen merge request') - expect(container).not_to have_link(exact_text: 'Edit') - end - end - end -end diff --git a/spec/features/issuables/merge_request_discussion_lock_spec.rb b/spec/features/issuables/merge_request_discussion_lock_spec.rb deleted file mode 100644 index 4e0265839f6..00000000000 --- a/spec/features/issuables/merge_request_discussion_lock_spec.rb +++ /dev/null @@ -1,79 +0,0 @@ -# frozen_string_literal: true -# TODO use shared examples to merge this spec with discussion_lock_spec.rb -# https://gitlab.com/gitlab-org/gitlab/-/issues/255910 - -require 'spec_helper' - -RSpec.describe 'Merge Request Discussion Lock', :js do - let(:user) { create(:user) } - let(:project) { create(:project, :public, :repository) } - let(:merge_request) { create(:merge_request, source_project: project, author: user) } - - before do - sign_in(user) - end - - context 'when a user is a team member' do - before do - project.add_developer(user) - end - - context 'when the discussion is unlocked' do - it 'the user can lock the merge_request' do - visit project_merge_request_path(merge_request.project, merge_request) - - expect(find('.issuable-sidebar')).to have_content('Unlocked') - - page.within('.issuable-sidebar') do - find('.lock-edit').click - click_button('Lock') - end - - expect(find('[data-testid="lock-status"]')).to have_content('Locked') - end - end - - context 'when the discussion is locked' do - before do - merge_request.update_attribute(:discussion_locked, true) - visit project_merge_request_path(merge_request.project, merge_request) - end - - it 'the user can unlock the merge_request' do - expect(find('.issuable-sidebar')).to have_content('Locked') - - page.within('.issuable-sidebar') do - find('.lock-edit').click - click_button('Unlock') - end - - expect(find('[data-testid="lock-status"]')).to have_content('Unlocked') - end - end - end - - context 'when a user is not a team member' do - context 'when the discussion is unlocked' do - before do - visit project_merge_request_path(merge_request.project, merge_request) - end - - it 'the user can not lock the merge_request' do - expect(find('.issuable-sidebar')).to have_content('Unlocked') - expect(find('.issuable-sidebar')).not_to have_selector('.lock-edit') - end - end - - context 'when the discussion is locked' do - before do - merge_request.update_attribute(:discussion_locked, true) - visit project_merge_request_path(merge_request.project, merge_request) - end - - it 'the user can not unlock the merge_request' do - expect(find('.issuable-sidebar')).to have_content('Locked') - expect(find('.issuable-sidebar')).not_to have_selector('.lock-edit') - end - end - end -end |