2019-05-23 18:07:59 +00:00
# frozen_string_literal: true
2016-10-26 17:34:06 +00:00
require 'spec_helper'
2020-06-16 18:09:01 +00:00
RSpec . describe 'Group merge requests page' do
2017-08-27 06:41:42 +00:00
include FilteredSearchHelpers
2016-10-26 17:34:06 +00:00
let ( :path ) { merge_requests_group_path ( group ) }
2016-11-27 10:33:15 +00:00
let ( :issuable ) { create ( :merge_request , source_project : project , target_project : project , title : 'this is my created issuable' ) }
2018-03-17 08:29:05 +00:00
let ( :access_level ) { ProjectFeature :: ENABLED }
let ( :user ) { user_in_group }
2016-10-26 17:34:06 +00:00
include_examples 'project features apply to issuables' , MergeRequest
2016-11-27 10:33:15 +00:00
context 'archived issuable' do
2017-07-21 21:00:42 +00:00
let ( :project_archived ) { create ( :project , :archived , :merge_requests_enabled , :repository , group : group ) }
2016-11-27 10:33:15 +00:00
let ( :issuable_archived ) { create ( :merge_request , source_project : project_archived , target_project : project_archived , title : 'issuable of an archived project' ) }
before do
issuable_archived
visit path
end
it 'hides archived merge requests' do
expect ( page ) . to have_content ( issuable . title )
expect ( page ) . not_to have_content ( issuable_archived . title )
end
it 'ignores archived merge request count badges in navbar' do
2021-04-01 09:09:05 +00:00
expect ( first ( :link , text : 'Merge requests' ) . find ( '.badge' ) . text ) . to eq ( " 1 " )
2016-11-27 10:33:15 +00:00
end
it 'ignores archived merge request count badges in state-filters' do
expect ( page . find ( '#state-opened span.badge' ) . text ) . to eq ( " 1 " )
expect ( page . find ( '#state-merged span.badge' ) . text ) . to eq ( " 0 " )
expect ( page . find ( '#state-closed span.badge' ) . text ) . to eq ( " 0 " )
expect ( page . find ( '#state-all span.badge' ) . text ) . to eq ( " 1 " )
end
end
2017-08-27 06:41:42 +00:00
2018-03-17 08:29:05 +00:00
context 'when merge request assignee to user' do
before do
2019-04-07 18:35:16 +00:00
issuable . update! ( assignees : [ user ] )
2018-03-17 08:29:05 +00:00
visit path
end
it { expect ( page ) . to have_content issuable . title [ 0 .. 80 ] }
end
2017-08-27 06:41:42 +00:00
context 'group filtered search' , :js do
let ( :user2 ) { user_outside_group }
it 'filters by assignee only group users' do
2020-03-04 09:08:20 +00:00
filtered_search . set ( 'assignee:=' )
2017-08-27 06:41:42 +00:00
expect ( find ( '#js-dropdown-assignee .filter-dropdown' ) ) . to have_content ( user . name )
expect ( find ( '#js-dropdown-assignee .filter-dropdown' ) ) . not_to have_content ( user2 . name )
end
2022-09-29 15:09:34 +00:00
it 'will still show the navbar with no results' do
search_term = 'some-search-term-that-produces-zero-results'
filtered_search . set ( search_term )
filtered_search . send_keys ( :enter )
expect ( page ) . to have_content ( 'filter produced no results' )
expect ( page ) . to have_link ( 'Open' , href : " /groups/ #{ group . name } /-/merge_requests?scope=all&search= #{ search_term } &state=opened " )
end
2017-08-27 06:41:42 +00:00
end
2018-07-02 08:04:43 +00:00
2021-09-07 15:11:06 +00:00
describe 'new merge request dropdown' do
let ( :project_with_merge_requests_disabled ) { create ( :project , :merge_requests_disabled , group : group ) }
before do
visit path
end
it 'shows projects only with merge requests feature enabled' , :js do
2022-01-04 18:14:20 +00:00
find ( '.js-new-project-item-link' ) . click
2021-09-07 15:11:06 +00:00
page . within ( '.select2-results' ) do
expect ( page ) . to have_content ( project . name_with_namespace )
expect ( page ) . not_to have_content ( project_with_merge_requests_disabled . name_with_namespace )
end
end
end
2021-07-13 09:09:42 +00:00
context 'empty state with no merge requests' do
before do
MergeRequest . delete_all
end
it 'shows an empty state, button to create merge request and no filters bar' , :aggregate_failures , :js do
visit path
expect ( page ) . to have_selector ( '.empty-state' )
2021-09-07 15:11:06 +00:00
expect ( page ) . to have_link ( 'Select project to create merge request' )
2022-07-14 00:08:59 +00:00
expect ( page ) . to have_selector ( '.issues-filters' )
2021-07-13 09:09:42 +00:00
end
context 'with no open merge requests' do
it 'shows an empty state, button to create merge request and filters bar' , :aggregate_failures , :js do
create ( :merge_request , :closed , source_project : project , target_project : project )
visit path
expect ( page ) . to have_selector ( '.empty-state' )
2021-09-07 15:11:06 +00:00
expect ( page ) . to have_link ( 'Select project to create merge request' )
2021-07-13 09:09:42 +00:00
expect ( page ) . to have_selector ( '.issues-filters' )
end
end
end
2016-10-26 17:34:06 +00:00
end