2019-10-12 21:52:04 +05:30
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2019-12-04 20:38:33 +05:30
|
|
|
require 'spec_helper'
|
2016-06-02 11:05:42 +05:30
|
|
|
|
2020-06-23 00:09:42 +05:30
|
|
|
RSpec.describe 'Merge requests > User lists merge requests' do
|
2016-09-13 17:45:13 +05:30
|
|
|
include MergeRequestHelpers
|
2016-06-02 11:05:42 +05:30
|
|
|
include SortingHelper
|
|
|
|
|
2017-09-10 17:25:29 +05:30
|
|
|
let(:project) { create(:project, :public, :repository) }
|
2016-06-02 11:05:42 +05:30
|
|
|
let(:user) { create(:user) }
|
2021-01-03 14:25:43 +05:30
|
|
|
let(:user2) { create(:user) }
|
|
|
|
let(:user3) { create(:user) }
|
|
|
|
let(:user4) { create(:user) }
|
|
|
|
let(:user5) { create(:user) }
|
2016-06-02 11:05:42 +05:30
|
|
|
|
|
|
|
before do
|
|
|
|
@fix = create(:merge_request,
|
|
|
|
title: 'fix',
|
|
|
|
source_project: project,
|
|
|
|
source_branch: 'fix',
|
2019-07-31 22:56:46 +05:30
|
|
|
assignees: [user],
|
2021-01-03 14:25:43 +05:30
|
|
|
reviewers: [user, user2, user3, user4, user5],
|
2019-03-13 22:55:13 +05:30
|
|
|
milestone: create(:milestone, project: project, due_date: '2013-12-11'),
|
2016-06-02 11:05:42 +05:30
|
|
|
created_at: 1.minute.ago,
|
|
|
|
updated_at: 1.minute.ago)
|
|
|
|
create(:merge_request,
|
|
|
|
title: 'markdown',
|
|
|
|
source_project: project,
|
|
|
|
source_branch: 'markdown',
|
2019-07-31 22:56:46 +05:30
|
|
|
assignees: [user],
|
2021-01-03 14:25:43 +05:30
|
|
|
reviewers: [user, user2, user3, user4],
|
2019-03-13 22:55:13 +05:30
|
|
|
milestone: create(:milestone, project: project, due_date: '2013-12-12'),
|
2016-06-02 11:05:42 +05:30
|
|
|
created_at: 2.minutes.ago,
|
|
|
|
updated_at: 2.minutes.ago)
|
|
|
|
create(:merge_request,
|
2018-03-17 18:26:18 +05:30
|
|
|
title: 'merge-test',
|
2016-06-02 11:05:42 +05:30
|
|
|
source_project: project,
|
2018-03-17 18:26:18 +05:30
|
|
|
source_branch: 'merge-test',
|
2016-06-02 11:05:42 +05:30
|
|
|
created_at: 3.minutes.ago,
|
|
|
|
updated_at: 10.seconds.ago)
|
|
|
|
end
|
|
|
|
|
2021-01-03 14:25:43 +05:30
|
|
|
context 'when merge_request_reviewers is turned on' do
|
|
|
|
before do
|
|
|
|
stub_feature_flags(merge_request_reviewers: true)
|
|
|
|
visit_merge_requests(project, reviewer_id: user.id)
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'has reviewers in MR list' do
|
|
|
|
expect(page).to have_css('.issuable-reviewers')
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'shows reviewers avatar count badge if more_reviewers_count > 4' do
|
|
|
|
first_issuable_reviewers = first('.issuable-reviewers')
|
|
|
|
|
|
|
|
expect(first_issuable_reviewers).to have_content('2')
|
|
|
|
expect(first_issuable_reviewers).to have_css('.avatar-counter')
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'does not show reviewers avatar count badge if more_reviewers_count <= 4' do
|
|
|
|
expect(page.all('.issuable-reviewers')[1]).not_to have_css('.avatar-counter')
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'when merge_request_reviewers is turned false' do
|
|
|
|
it 'has no reviewers in MR list' do
|
|
|
|
stub_feature_flags(merge_request_reviewers: false)
|
|
|
|
visit_merge_requests(project, reviewer_id: user.id)
|
|
|
|
|
|
|
|
expect(page).not_to have_css('.issuable-reviewers')
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2016-06-02 11:05:42 +05:30
|
|
|
it 'filters on no assignee' do
|
2020-04-22 19:07:51 +05:30
|
|
|
visit_merge_requests(project, assignee_id: IssuableFinder::Params::FILTER_NONE)
|
2016-06-02 11:05:42 +05:30
|
|
|
|
2017-09-10 17:25:29 +05:30
|
|
|
expect(current_path).to eq(project_merge_requests_path(project))
|
2018-03-17 18:26:18 +05:30
|
|
|
expect(page).to have_content 'merge-test'
|
2016-06-02 11:05:42 +05:30
|
|
|
expect(page).not_to have_content 'fix'
|
|
|
|
expect(page).not_to have_content 'markdown'
|
|
|
|
expect(count_merge_requests).to eq(1)
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'filters on a specific assignee' do
|
|
|
|
visit_merge_requests(project, assignee_id: user.id)
|
|
|
|
|
2018-03-17 18:26:18 +05:30
|
|
|
expect(page).not_to have_content 'merge-test'
|
2016-06-02 11:05:42 +05:30
|
|
|
expect(page).to have_content 'fix'
|
|
|
|
expect(page).to have_content 'markdown'
|
|
|
|
expect(count_merge_requests).to eq(2)
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'sorts by newest' do
|
2018-03-17 18:26:18 +05:30
|
|
|
visit_merge_requests(project, sort: sort_value_created_date)
|
2016-06-02 11:05:42 +05:30
|
|
|
|
2016-09-13 17:45:13 +05:30
|
|
|
expect(first_merge_request).to include('fix')
|
2018-03-17 18:26:18 +05:30
|
|
|
expect(last_merge_request).to include('merge-test')
|
2016-06-02 11:05:42 +05:30
|
|
|
expect(count_merge_requests).to eq(3)
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'sorts by last updated' do
|
|
|
|
visit_merge_requests(project, sort: sort_value_recently_updated)
|
|
|
|
|
2018-03-17 18:26:18 +05:30
|
|
|
expect(first_merge_request).to include('merge-test')
|
2016-06-02 11:05:42 +05:30
|
|
|
expect(count_merge_requests).to eq(3)
|
|
|
|
end
|
|
|
|
|
2018-03-17 18:26:18 +05:30
|
|
|
it 'sorts by milestone' do
|
|
|
|
visit_merge_requests(project, sort: sort_value_milestone)
|
2016-06-02 11:05:42 +05:30
|
|
|
|
|
|
|
expect(first_merge_request).to include('fix')
|
|
|
|
expect(count_merge_requests).to eq(3)
|
|
|
|
end
|
|
|
|
|
2018-03-17 18:26:18 +05:30
|
|
|
it 'filters on one label and sorts by due date' do
|
2016-06-02 11:05:42 +05:30
|
|
|
label = create(:label, project: project)
|
|
|
|
create(:label_link, label: label, target: @fix)
|
|
|
|
|
|
|
|
visit_merge_requests(project, label_name: [label.name],
|
2018-03-17 18:26:18 +05:30
|
|
|
sort: sort_value_due_date)
|
2016-06-02 11:05:42 +05:30
|
|
|
|
|
|
|
expect(first_merge_request).to include('fix')
|
|
|
|
expect(count_merge_requests).to eq(1)
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'while filtering on two labels' do
|
|
|
|
let(:label) { create(:label, project: project) }
|
|
|
|
let(:label2) { create(:label, project: project) }
|
|
|
|
|
|
|
|
before do
|
|
|
|
create(:label_link, label: label, target: @fix)
|
|
|
|
create(:label_link, label: label2, target: @fix)
|
|
|
|
end
|
|
|
|
|
2018-03-17 18:26:18 +05:30
|
|
|
it 'sorts by due date' do
|
2016-06-02 11:05:42 +05:30
|
|
|
visit_merge_requests(project, label_name: [label.name, label2.name],
|
2018-03-17 18:26:18 +05:30
|
|
|
sort: sort_value_due_date)
|
2016-06-02 11:05:42 +05:30
|
|
|
|
|
|
|
expect(first_merge_request).to include('fix')
|
|
|
|
expect(count_merge_requests).to eq(1)
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'filter on assignee and' do
|
|
|
|
it 'sorts by due soon' do
|
|
|
|
visit_merge_requests(project, label_name: [label.name, label2.name],
|
|
|
|
assignee_id: user.id,
|
2018-03-17 18:26:18 +05:30
|
|
|
sort: sort_value_due_date)
|
2016-06-02 11:05:42 +05:30
|
|
|
|
|
|
|
expect(first_merge_request).to include('fix')
|
|
|
|
expect(count_merge_requests).to eq(1)
|
|
|
|
end
|
2016-06-16 23:09:34 +05:30
|
|
|
|
|
|
|
it 'sorts by recently due milestone' do
|
2017-09-10 17:25:29 +05:30
|
|
|
visit project_merge_requests_path(project,
|
2016-06-16 23:09:34 +05:30
|
|
|
label_name: [label.name, label2.name],
|
|
|
|
assignee_id: user.id,
|
2018-03-17 18:26:18 +05:30
|
|
|
sort: sort_value_milestone)
|
2016-06-16 23:09:34 +05:30
|
|
|
|
|
|
|
expect(first_merge_request).to include('fix')
|
|
|
|
end
|
2016-06-02 11:05:42 +05:30
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def count_merge_requests
|
|
|
|
page.all('ul.mr-list > li').count
|
|
|
|
end
|
|
|
|
end
|