2016-10-26 21:21:50 +00:00
require 'rails_helper'
2017-02-27 15:01:56 +00:00
feature 'Resolving all open discussions in a merge request from an issue' , feature : true , js : true do
2016-10-26 21:21:50 +00:00
let ( :user ) { create ( :user ) }
2017-02-27 15:01:56 +00:00
let ( :project ) { create ( :project ) }
2016-10-26 21:21:50 +00:00
let ( :merge_request ) { create ( :merge_request , source_project : project ) }
2017-03-10 01:29:11 +00:00
let! ( :discussion ) { create ( :diff_note_on_merge_request , noteable : merge_request , project : project ) . to_discussion }
2016-10-26 21:21:50 +00:00
2017-03-09 12:48:07 +00:00
describe 'as a user with access to the project' do
2016-10-26 21:21:50 +00:00
before do
2017-03-09 12:48:07 +00:00
project . team << [ user , :master ]
2017-06-05 18:44:29 +00:00
gitlab_sign_in user
2017-03-09 12:48:07 +00:00
visit namespace_project_merge_request_path ( project . namespace , project , merge_request )
2016-10-26 21:21:50 +00:00
end
2017-03-09 12:48:07 +00:00
it 'shows a button to resolve all discussions by creating a new issue' do
2017-04-19 01:56:24 +00:00
within ( '#resolve-count-app' ) do
2017-03-10 08:19:12 +00:00
expect ( page ) . to have_link " Resolve all discussions in new issue " , href : new_namespace_project_issue_path ( project . namespace , project , merge_request_to_resolve_discussions_of : merge_request . iid )
2017-03-09 12:48:07 +00:00
end
2016-10-26 21:21:50 +00:00
end
2017-03-09 12:48:07 +00:00
context 'resolving the discussion' do
before do
click_button 'Resolve discussion'
end
2017-02-27 15:01:56 +00:00
2017-03-09 12:48:07 +00:00
it 'hides the link for creating a new issue' do
2017-03-10 08:19:12 +00:00
expect ( page ) . not_to have_link " Resolve all discussions in new issue " , href : new_namespace_project_issue_path ( project . namespace , project , merge_request_to_resolve_discussions_of : merge_request . iid )
2017-03-09 12:48:07 +00:00
end
2016-10-26 21:21:50 +00:00
end
2017-03-09 12:48:07 +00:00
context 'creating an issue for discussions' do
2017-02-27 15:01:56 +00:00
before do
2017-03-10 08:19:12 +00:00
click_link " Resolve all discussions in new issue " , href : new_namespace_project_issue_path ( project . namespace , project , merge_request_to_resolve_discussions_of : merge_request . iid )
2017-02-27 15:01:56 +00:00
end
2017-03-09 12:48:07 +00:00
it_behaves_like 'creating an issue for a discussion'
2016-10-26 21:21:50 +00:00
end
2017-03-09 12:48:07 +00:00
context 'for a project where all discussions need to be resolved before merging' do
2016-10-26 21:21:50 +00:00
before do
2017-03-09 12:48:07 +00:00
project . update_attribute ( :only_allow_merge_if_all_discussions_are_resolved , true )
2016-10-26 21:21:50 +00:00
end
2017-03-09 12:48:07 +00:00
context 'with the internal tracker disabled' do
before do
project . project_feature . update_attribute ( :issues_access_level , ProjectFeature :: DISABLED )
visit namespace_project_merge_request_path ( project . namespace , project , merge_request )
end
2016-10-26 21:21:50 +00:00
2017-03-09 12:48:07 +00:00
it 'does not show a link to create a new issue' do
2017-05-09 04:15:34 +00:00
expect ( page ) . not_to have_link 'Create an issue to resolve them later'
2017-02-27 15:01:56 +00:00
end
2016-10-26 21:21:50 +00:00
end
2017-03-09 12:48:07 +00:00
context 'merge request has discussions that need to be resolved' do
2017-02-27 15:01:56 +00:00
before do
2017-03-09 12:48:07 +00:00
visit namespace_project_merge_request_path ( project . namespace , project , merge_request )
end
it 'shows a warning that the merge request contains unresolved discussions' do
2017-05-09 04:15:34 +00:00
expect ( page ) . to have_content 'There are unresolved discussions.'
2017-03-09 12:48:07 +00:00
end
it 'has a link to resolve all discussions by creating an issue' do
page . within '.mr-widget-body' do
2017-05-09 04:15:34 +00:00
expect ( page ) . to have_link 'Create an issue to resolve them later' , href : new_namespace_project_issue_path ( project . namespace , project , merge_request_to_resolve_discussions_of : merge_request . iid )
2017-03-09 12:48:07 +00:00
end
2017-02-27 15:01:56 +00:00
end
2017-03-09 12:48:07 +00:00
context 'creating an issue for discussions' do
before do
2017-05-09 04:15:34 +00:00
page . click_link 'Create an issue to resolve them later' , href : new_namespace_project_issue_path ( project . namespace , project , merge_request_to_resolve_discussions_of : merge_request . iid )
2017-03-09 12:48:07 +00:00
end
it_behaves_like 'creating an issue for a discussion'
end
2017-02-27 15:01:56 +00:00
end
2016-10-26 21:21:50 +00:00
end
end
2017-03-09 12:48:07 +00:00
describe 'as a reporter' do
before do
project . team << [ user , :reporter ]
2017-06-05 18:44:29 +00:00
gitlab_sign_in user
2017-03-10 08:19:12 +00:00
visit new_namespace_project_issue_path ( project . namespace , project , merge_request_to_resolve_discussions_of : merge_request . iid )
2017-03-09 12:48:07 +00:00
end
it 'Shows a notice to ask someone else to resolve the discussions' do
expect ( page ) . to have_content ( " The discussions at #{ merge_request . to_reference } will stay unresolved. Ask someone with permission to resolve them. " )
end
end
2016-10-26 21:21:50 +00:00
end