Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/features/merge_request/user_edits_assignees_sidebar_spec.rb')
-rw-r--r--spec/features/merge_request/user_edits_assignees_sidebar_spec.rb103
1 files changed, 78 insertions, 25 deletions
diff --git a/spec/features/merge_request/user_edits_assignees_sidebar_spec.rb b/spec/features/merge_request/user_edits_assignees_sidebar_spec.rb
index e6b77e28281..affd6f6b7b5 100644
--- a/spec/features/merge_request/user_edits_assignees_sidebar_spec.rb
+++ b/spec/features/merge_request/user_edits_assignees_sidebar_spec.rb
@@ -2,7 +2,7 @@
require 'spec_helper'
-describe 'Merge request > User edits assignees sidebar', :js do
+RSpec.describe 'Merge request > User edits assignees sidebar', :js do
let(:project) { create(:project, :public, :repository) }
let(:protected_branch) { create(:protected_branch, :maintainers_can_push, name: 'master', project: project) }
let(:merge_request) { create(:merge_request, :simple, source_project: project, target_branch: protected_branch.name) }
@@ -20,49 +20,102 @@ describe 'Merge request > User edits assignees sidebar', :js do
let(:sidebar_assignee_dropdown_item) { sidebar_assignee_block.find(".dropdown-menu li[data-user-id=\"#{assignee.id}\"]") }
let(:sidebar_assignee_dropdown_tooltip) { sidebar_assignee_dropdown_item.find('a')['data-title'] || '' }
- before do
- stub_const('Autocomplete::UsersFinder::LIMIT', users_find_limit)
+ context 'when invite_members_version_a experiment is not enabled' do
+ before do
+ stub_const('Autocomplete::UsersFinder::LIMIT', users_find_limit)
- sign_in(project.owner)
+ sign_in(project.owner)
- merge_request.assignees << assignee
+ merge_request.assignees << assignee
- visit project_merge_request_path(project, merge_request)
+ visit project_merge_request_path(project, merge_request)
- wait_for_requests
- end
+ wait_for_requests
+ end
+
+ shared_examples 'when assigned' do |expected_tooltip: ''|
+ it 'shows assignee name' do
+ expect(sidebar_assignee_block).to have_text(assignee.name)
+ end
+
+ it "shows assignee tooltip '#{expected_tooltip}'" do
+ expect(sidebar_assignee_tooltip).to eql(expected_tooltip)
+ end
+
+ context 'when edit is clicked' do
+ before do
+ sidebar_assignee_block.click_link('Edit')
+
+ wait_for_requests
+ end
+
+ it "shows assignee tooltip '#{expected_tooltip}" do
+ expect(sidebar_assignee_dropdown_tooltip).to eql(expected_tooltip)
+ end
+
+ it 'does not show invite link' do
+ page.within '.dropdown-menu-user' do
+ expect(page).not_to have_link('Invite Members')
+ end
+ end
+ end
+ end
+
+ context 'when assigned to maintainer' do
+ let(:assignee) { project_maintainers.last }
- shared_examples 'when assigned' do |expected_tooltip: ''|
- it 'shows assignee name' do
- expect(sidebar_assignee_block).to have_text(assignee.name)
+ it_behaves_like 'when assigned', expected_tooltip: ''
end
- it "shows assignee tooltip '#{expected_tooltip}'" do
- expect(sidebar_assignee_tooltip).to eql(expected_tooltip)
+ context 'when assigned to developer' do
+ let(:assignee) { project_developers.last }
+
+ it_behaves_like 'when assigned', expected_tooltip: 'Cannot merge'
end
+ end
- context 'when edit is clicked' do
+ context 'when invite_members_version_a experiment is enabled' do
+ let_it_be(:user) { create(:user) }
+
+ before do
+ stub_experiment_for_user(invite_members_version_a: true)
+ sign_in(user)
+ end
+
+ context 'when user can not see invite members' do
before do
- sidebar_assignee_block.click_link('Edit')
+ project.add_developer(user)
+ visit project_merge_request_path(project, merge_request)
+
+ find('.block.assignee .edit-link').click
wait_for_requests
end
- it "shows assignee tooltip '#{expected_tooltip}" do
- expect(sidebar_assignee_dropdown_tooltip).to eql(expected_tooltip)
+ it 'does not see link to invite members' do
+ page.within '.dropdown-menu-user' do
+ expect(page).not_to have_link('Invite Members')
+ end
end
end
- end
- context 'when assigned to maintainer' do
- let(:assignee) { project_maintainers.last }
+ context 'when user can see invite members' do
+ before do
+ project.add_maintainer(user)
+ visit project_merge_request_path(project, merge_request)
- it_behaves_like 'when assigned', expected_tooltip: ''
- end
+ find('.block.assignee .edit-link').click
- context 'when assigned to developer' do
- let(:assignee) { project_developers.last }
+ wait_for_requests
+ end
- it_behaves_like 'when assigned', expected_tooltip: 'Cannot merge'
+ it 'sees link to invite members' do
+ page.within '.dropdown-menu-user' do
+ expect(page).to have_link('Invite Members', href: project_project_members_path(project))
+ expect(page).to have_selector('[data-track-event="click_invite_members"]')
+ expect(page).to have_selector("[data-track-label='edit_assignee']")
+ end
+ end
+ end
end
end