2019-10-12 21:52:04 +05:30
# frozen_string_literal: true
2019-12-04 20:38:33 +05:30
require 'spec_helper'
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
describe 'Merge request > User resolves diff notes and threads' , :js do
2017-09-10 17:25:29 +05:30
let ( :project ) { create ( :project , :public , :repository ) }
2018-03-17 18:26:18 +05:30
let ( :user ) { project . creator }
let ( :guest ) { create ( :user ) }
2016-09-13 17:45:13 +05:30
let ( :merge_request ) { create ( :merge_request_with_diffs , source_project : project , author : user , title : " Bug NS-04 " ) }
2018-05-09 12:01:36 +05:30
let! ( :note ) { create ( :diff_note_on_merge_request , project : project , noteable : merge_request , note : " | Markdown | Table | \n |-------|---------| \n | first | second | " ) }
2016-09-13 17:45:13 +05:30
let ( :path ) { " files/ruby/popen.rb " }
let ( :position ) do
Gitlab :: Diff :: Position . new (
old_path : path ,
new_path : path ,
old_line : nil ,
new_line : 9 ,
diff_refs : merge_request . diff_refs
)
end
2019-12-26 22:10:19 +05:30
before do
stub_feature_flags ( single_mr_diff_view : false )
end
it_behaves_like 'rendering a single diff version'
2019-09-30 21:07:59 +05:30
context 'no threads' do
2016-09-13 17:45:13 +05:30
before do
2018-11-18 11:00:15 +05:30
project . add_maintainer ( user )
2018-03-17 18:26:18 +05:30
sign_in ( user )
2016-09-13 17:45:13 +05:30
note . destroy
visit_merge_request
end
2019-09-30 21:07:59 +05:30
it 'displays no thread resolved data' do
expect ( page ) . not_to have_content ( 'thread resolved' )
2016-09-13 17:45:13 +05:30
expect ( page ) . not_to have_selector ( '.discussion-next-btn' )
end
end
context 'as authorized user' do
before do
2018-11-18 11:00:15 +05:30
project . add_maintainer ( user )
2018-03-17 18:26:18 +05:30
sign_in ( user )
2016-09-13 17:45:13 +05:30
visit_merge_request
end
2019-09-30 21:07:59 +05:30
context 'single thread' do
it 'shows text with how many threads' do
2016-09-13 17:45:13 +05:30
page . within '.line-resolve-all-container' do
2019-09-30 21:07:59 +05:30
expect ( page ) . to have_content ( '0/1 thread resolved' )
2016-09-13 17:45:13 +05:30
end
end
it 'allows user to mark a note as resolved' do
page . within '.diff-content .note' do
find ( '.line-resolve-btn' ) . click
expect ( page ) . to have_selector ( '.line-resolve-btn.is-active' )
2019-02-15 15:39:39 +05:30
expect ( find ( '.line-resolve-btn' ) [ 'aria-label' ] ) . to eq ( " Resolved by #{ user . name } " )
2016-09-13 17:45:13 +05:30
end
page . within '.diff-content' do
2019-09-30 21:07:59 +05:30
expect ( page ) . to have_selector ( '.btn' , text : 'Unresolve thread' )
2016-09-13 17:45:13 +05:30
end
page . within '.line-resolve-all-container' do
2019-09-30 21:07:59 +05:30
expect ( page ) . to have_content ( '1/1 thread resolved' )
2016-09-13 17:45:13 +05:30
expect ( page ) . to have_selector ( '.line-resolve-btn.is-active' )
end
end
2019-09-30 21:07:59 +05:30
it 'allows user to mark thread as resolved' do
2016-09-13 17:45:13 +05:30
page . within '.diff-content' do
2019-09-30 21:07:59 +05:30
click_button 'Resolve thread'
2016-09-13 17:45:13 +05:30
end
2018-03-17 18:26:18 +05:30
expect ( page ) . to have_selector ( '.discussion-body' , visible : false )
2016-09-13 17:45:13 +05:30
page . within '.diff-content .note' do
expect ( page ) . to have_selector ( '.line-resolve-btn.is-active' )
end
page . within '.line-resolve-all-container' do
2019-09-30 21:07:59 +05:30
expect ( page ) . to have_content ( '1/1 thread resolved' )
2016-09-13 17:45:13 +05:30
expect ( page ) . to have_selector ( '.line-resolve-btn.is-active' )
end
end
2019-09-30 21:07:59 +05:30
it 'allows user to unresolve thread' do
2016-09-13 17:45:13 +05:30
page . within '.diff-content' do
2019-09-30 21:07:59 +05:30
click_button 'Resolve thread'
click_button 'Unresolve thread'
2016-09-13 17:45:13 +05:30
end
page . within '.line-resolve-all-container' do
2019-09-30 21:07:59 +05:30
expect ( page ) . to have_content ( '0/1 thread resolved' )
2016-09-13 17:45:13 +05:30
end
end
2019-09-30 21:07:59 +05:30
describe 'resolved thread' do
2018-03-17 18:26:18 +05:30
before do
page . within '.diff-content' do
2019-09-30 21:07:59 +05:30
click_button 'Resolve thread'
2018-03-17 18:26:18 +05:30
end
visit_merge_request
2016-09-13 17:45:13 +05:30
end
2018-03-17 18:26:18 +05:30
describe 'timeline view' do
2019-09-30 21:07:59 +05:30
it 'hides when resolve thread is clicked' do
2018-11-08 19:23:39 +05:30
expect ( page ) . to have_selector ( '.discussion-header' )
expect ( page ) . not_to have_selector ( '.discussion-body' )
2018-03-17 18:26:18 +05:30
end
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
it 'shows resolved thread when toggled' do
2018-03-17 18:26:18 +05:30
find ( " .timeline-content .discussion[data-discussion-id=' #{ note . discussion_id } '] .discussion-toggle-button " ) . click
2018-05-09 12:01:36 +05:30
expect ( page . find ( " .line-holder-placeholder " ) ) . to be_visible
2018-03-17 18:26:18 +05:30
expect ( page . find ( " .timeline-content # note_ #{ note . id } " ) ) . to be_visible
end
2018-05-09 12:01:36 +05:30
it 'renders tables in lazy-loaded resolved diff dicussions' do
find ( " .timeline-content .discussion[data-discussion-id=' #{ note . discussion_id } '] .discussion-toggle-button " ) . click
wait_for_requests
expect ( page . find ( " .timeline-content # note_ #{ note . id } " ) ) . not_to have_css ( " .line_holder " )
expect ( page . find ( " .timeline-content # note_ #{ note . id } " ) ) . to have_css ( " tr " , count : 2 )
end
2018-03-17 18:26:18 +05:30
end
describe 'side-by-side view' do
before do
page . within ( '.merge-request-tabs' ) { click_link 'Changes' }
2019-03-02 22:35:43 +05:30
find ( '.js-show-diff-settings' ) . click
2018-03-17 18:26:18 +05:30
page . find ( '#parallel-diff-btn' ) . click
end
2019-09-30 21:07:59 +05:30
it 'hides when resolve thread is clicked' do
2018-11-08 19:23:39 +05:30
expect ( page ) . not_to have_selector ( '.diffs .diff-file .notes_holder' )
2018-03-17 18:26:18 +05:30
end
2019-09-30 21:07:59 +05:30
it 'shows resolved thread when toggled' do
2018-03-17 18:26:18 +05:30
find ( '.diff-comment-avatar-holders' ) . click
expect ( find ( '.diffs .diff-file .notes_holder' ) ) . to be_visible
end
end
2016-09-13 17:45:13 +05:30
2018-12-05 23:21:45 +05:30
describe 'reply form' do
before do
2019-09-30 21:07:59 +05:30
click_button 'Toggle thread'
2016-09-13 17:45:13 +05:30
2018-12-05 23:21:45 +05:30
page . within '.diff-content' do
click_button 'Reply...'
end
end
2016-09-13 17:45:13 +05:30
2018-12-05 23:21:45 +05:30
it 'allows user to comment' do
page . within '.diff-content' do
find ( '.js-note-text' ) . set 'testing'
2016-09-13 17:45:13 +05:30
2018-12-05 23:21:45 +05:30
click_button 'Comment'
2016-09-13 17:45:13 +05:30
2018-12-05 23:21:45 +05:30
wait_for_requests
end
2016-09-13 17:45:13 +05:30
2018-12-05 23:21:45 +05:30
page . within '.line-resolve-all-container' do
2019-09-30 21:07:59 +05:30
expect ( page ) . to have_content ( '1/1 thread resolved' )
2018-12-05 23:21:45 +05:30
end
end
2016-09-13 17:45:13 +05:30
2018-12-05 23:21:45 +05:30
it 'allows user to unresolve from reply form without a comment' do
page . within '.diff-content' do
2019-09-30 21:07:59 +05:30
click_button 'Unresolve thread'
2018-12-05 23:21:45 +05:30
wait_for_requests
end
page . within '.line-resolve-all-container' do
2019-09-30 21:07:59 +05:30
expect ( page ) . to have_content ( '0/1 thread resolved' )
2018-12-05 23:21:45 +05:30
expect ( page ) . not_to have_selector ( '.line-resolve-btn.is-active' )
end
end
2019-09-30 21:07:59 +05:30
it 'allows user to comment & unresolve thread' do
2018-12-05 23:21:45 +05:30
page . within '.diff-content' do
find ( '.js-note-text' ) . set 'testing'
2019-09-30 21:07:59 +05:30
click_button 'Comment & unresolve thread'
2018-12-05 23:21:45 +05:30
wait_for_requests
end
page . within '.line-resolve-all-container' do
2019-09-30 21:07:59 +05:30
expect ( page ) . to have_content ( '0/1 thread resolved' )
2018-12-05 23:21:45 +05:30
end
end
2016-09-13 17:45:13 +05:30
end
end
2018-12-05 23:21:45 +05:30
it 'allows user to resolve from reply form without a comment' do
2016-09-13 17:45:13 +05:30
page . within '.diff-content' do
click_button 'Reply...'
2019-09-30 21:07:59 +05:30
click_button 'Resolve thread'
2016-09-13 17:45:13 +05:30
end
page . within '.line-resolve-all-container' do
2019-09-30 21:07:59 +05:30
expect ( page ) . to have_content ( '1/1 thread resolved' )
2016-09-13 17:45:13 +05:30
expect ( page ) . to have_selector ( '.line-resolve-btn.is-active' )
end
end
2019-09-30 21:07:59 +05:30
it 'allows user to comment & resolve thread' do
2016-09-13 17:45:13 +05:30
page . within '.diff-content' do
click_button 'Reply...'
find ( '.js-note-text' ) . set 'testing'
2019-09-30 21:07:59 +05:30
click_button 'Comment & resolve thread'
2016-09-13 17:45:13 +05:30
end
page . within '.line-resolve-all-container' do
2019-09-30 21:07:59 +05:30
expect ( page ) . to have_content ( '1/1 thread resolved' )
2018-12-05 23:21:45 +05:30
expect ( page ) . to have_selector ( '.line-resolve-btn.is-active' )
2016-09-13 17:45:13 +05:30
end
end
2019-09-30 21:07:59 +05:30
it 'allows user to quickly scroll to next unresolved thread' do
2016-09-13 17:45:13 +05:30
page . within '.line-resolve-all-container' do
page . find ( '.discussion-next-btn' ) . click
end
2018-03-17 18:26:18 +05:30
expect ( page . evaluate_script ( " window.pageYOffset " ) ) . to be > 0
2016-09-13 17:45:13 +05:30
end
it 'hides jump to next button when all resolved' do
page . within '.diff-content' do
2019-09-30 21:07:59 +05:30
click_button 'Resolve thread'
2016-09-13 17:45:13 +05:30
end
expect ( page ) . to have_selector ( '.discussion-next-btn' , visible : false )
end
it 'updates updated text after resolving note' do
page . within '.diff-content .note' do
2018-11-08 19:23:39 +05:30
resolve_button = find ( '.line-resolve-btn' )
resolve_button . click
wait_for_requests
2016-09-13 17:45:13 +05:30
2019-02-15 15:39:39 +05:30
expect ( resolve_button [ 'aria-label' ] ) . to eq ( " Resolved by #{ user . name } " )
2018-11-08 19:23:39 +05:30
end
2016-09-13 17:45:13 +05:30
end
2019-09-30 21:07:59 +05:30
it 'hides jump to next thread button' do
2016-09-13 17:45:13 +05:30
page . within '.discussion-reply-holder' do
expect ( page ) . not_to have_selector ( '.discussion-next-btn' )
end
end
end
context 'multiple notes' do
before do
2017-08-17 22:00:37 +05:30
create ( :diff_note_on_merge_request , project : project , noteable : merge_request , in_reply_to : note )
visit_merge_request
2016-09-13 17:45:13 +05:30
end
2019-09-30 21:07:59 +05:30
it 'does not mark thread as resolved when resolving single note' do
2018-03-17 18:26:18 +05:30
page . within ( " # note_ #{ note . id } " ) do
2016-09-13 17:45:13 +05:30
first ( '.line-resolve-btn' ) . click
2017-08-17 22:00:37 +05:30
2018-03-17 18:26:18 +05:30
wait_for_requests
2019-02-15 15:39:39 +05:30
expect ( first ( '.line-resolve-btn' ) [ 'aria-label' ] ) . to eq ( " Resolved by #{ user . name } " )
2016-09-13 17:45:13 +05:30
end
expect ( page ) . to have_content ( 'Last updated' )
page . within '.line-resolve-all-container' do
2019-09-30 21:07:59 +05:30
expect ( page ) . to have_content ( '0/1 thread resolved' )
2016-09-13 17:45:13 +05:30
end
end
2019-09-30 21:07:59 +05:30
it 'resolves thread' do
2018-11-08 19:23:39 +05:30
resolve_buttons = page . all ( '.note .line-resolve-btn' , count : 2 )
resolve_buttons . each do | button |
2018-03-17 18:26:18 +05:30
button . click
2016-09-13 17:45:13 +05:30
end
2018-11-08 19:23:39 +05:30
wait_for_requests
resolve_buttons . each do | button |
2019-02-15 15:39:39 +05:30
expect ( button [ 'aria-label' ] ) . to eq ( " Resolved by #{ user . name } " )
2018-11-08 19:23:39 +05:30
end
2016-09-13 17:45:13 +05:30
page . within '.line-resolve-all-container' do
2019-09-30 21:07:59 +05:30
expect ( page ) . to have_content ( '1/1 thread resolved' )
2016-09-13 17:45:13 +05:30
end
end
end
2019-09-30 21:07:59 +05:30
context 'muliple threads' do
2016-09-13 17:45:13 +05:30
before do
create ( :diff_note_on_merge_request , project : project , position : position , noteable : merge_request )
visit_merge_request
end
2019-09-30 21:07:59 +05:30
it 'shows text with how many threads' do
2016-09-13 17:45:13 +05:30
page . within '.line-resolve-all-container' do
2019-09-30 21:07:59 +05:30
expect ( page ) . to have_content ( '0/2 threads resolved' )
2016-09-13 17:45:13 +05:30
end
end
it 'allows user to mark a single note as resolved' do
2019-09-30 21:07:59 +05:30
click_button ( 'Resolve thread' , match : :first )
2016-09-13 17:45:13 +05:30
page . within '.line-resolve-all-container' do
2019-09-30 21:07:59 +05:30
expect ( page ) . to have_content ( '1/2 threads resolved' )
2016-09-13 17:45:13 +05:30
end
end
it 'allows user to mark all notes as resolved' do
2018-11-08 19:23:39 +05:30
page . all ( '.note .line-resolve-btn' , count : 2 ) . each do | btn |
2016-09-13 17:45:13 +05:30
btn . click
end
page . within '.line-resolve-all-container' do
2019-09-30 21:07:59 +05:30
expect ( page ) . to have_content ( '2/2 threads resolved' )
2016-09-13 17:45:13 +05:30
expect ( page ) . to have_selector ( '.line-resolve-btn.is-active' )
end
end
2019-09-30 21:07:59 +05:30
it 'allows user to mark all threads as resolved' do
2018-11-08 19:23:39 +05:30
page . all ( '.discussion-reply-holder' , count : 2 ) . each do | reply_holder |
2016-09-13 17:45:13 +05:30
page . within reply_holder do
2019-09-30 21:07:59 +05:30
click_button 'Resolve thread'
2016-09-13 17:45:13 +05:30
end
end
page . within '.line-resolve-all-container' do
2019-09-30 21:07:59 +05:30
expect ( page ) . to have_content ( '2/2 threads resolved' )
2016-09-13 17:45:13 +05:30
expect ( page ) . to have_selector ( '.line-resolve-btn.is-active' )
end
end
2019-09-30 21:07:59 +05:30
it 'allows user to quickly scroll to next unresolved thread' do
2018-11-08 19:23:39 +05:30
page . within ( '.discussion-reply-holder' , match : :first ) do
2019-09-30 21:07:59 +05:30
click_button 'Resolve thread'
2016-09-13 17:45:13 +05:30
end
page . within '.line-resolve-all-container' do
2018-03-17 18:26:18 +05:30
page . find ( '.discussion-next-btn' ) . click
2016-09-13 17:45:13 +05:30
end
2018-03-17 18:26:18 +05:30
expect ( page . evaluate_script ( " window.pageYOffset " ) ) . to be > 0
2016-09-13 17:45:13 +05:30
end
it 'updates updated text after resolving note' do
2018-11-08 19:23:39 +05:30
page . within ( '.diff-content .note' , match : :first ) do
resolve_button = find ( '.line-resolve-btn' )
2016-09-13 17:45:13 +05:30
2018-11-08 19:23:39 +05:30
resolve_button . click
wait_for_requests
2019-02-15 15:39:39 +05:30
expect ( resolve_button [ 'aria-label' ] ) . to eq ( " Resolved by #{ user . name } " )
2018-11-08 19:23:39 +05:30
end
2016-09-13 17:45:13 +05:30
end
2019-10-12 21:52:04 +05:30
it 'shows jump to next discussion button on all discussions' do
2019-02-15 15:39:39 +05:30
wait_for_requests
all_discussion_replies = page . all ( '.discussion-reply-holder' )
expect ( all_discussion_replies . count ) . to eq ( 2 )
2019-10-12 21:52:04 +05:30
expect ( all_discussion_replies . first . all ( '.discussion-next-btn' ) . count ) . to eq ( 1 )
expect ( all_discussion_replies . last . all ( '.discussion-next-btn' ) . count ) . to eq ( 1 )
2016-09-13 17:45:13 +05:30
end
2017-08-17 22:00:37 +05:30
2019-09-30 21:07:59 +05:30
it 'displays next thread even if hidden' do
2018-11-08 19:23:39 +05:30
page . all ( '.note-discussion' , count : 2 ) . each do | discussion |
2016-09-13 17:45:13 +05:30
page . within discussion do
2019-09-30 21:07:59 +05:30
click_button 'Toggle thread'
2016-09-13 17:45:13 +05:30
end
end
page . within ( '.issuable-discussion #notes' ) do
2019-09-30 21:07:59 +05:30
expect ( page ) . not_to have_selector ( '.btn' , text : 'Resolve thread' )
2016-09-13 17:45:13 +05:30
end
page . within '.line-resolve-all-container' do
page . find ( '.discussion-next-btn' ) . click
end
2019-02-15 15:39:39 +05:30
page . all ( '.note-discussion' ) . first do
2019-09-30 21:07:59 +05:30
expect ( page . find ( '.discussion-with-resolve-btn' ) ) . to have_selector ( '.btn' , text : 'Resolve thread' )
2019-02-15 15:39:39 +05:30
end
page . all ( '.note-discussion' ) . last do
2019-09-30 21:07:59 +05:30
expect ( page . find ( '.discussion-with-resolve-btn' ) ) . not . to have_selector ( '.btn' , text : 'Resolve thread' )
2019-02-15 15:39:39 +05:30
end
2016-09-13 17:45:13 +05:30
end
end
context 'changes tab' do
2019-09-30 21:07:59 +05:30
it 'shows text with how many threads' do
2016-09-13 17:45:13 +05:30
page . within '.line-resolve-all-container' do
2019-09-30 21:07:59 +05:30
expect ( page ) . to have_content ( '0/1 thread resolved' )
2016-09-13 17:45:13 +05:30
end
end
it 'allows user to mark a note as resolved' do
page . within '.diff-content .note' do
find ( '.line-resolve-btn' ) . click
expect ( page ) . to have_selector ( '.line-resolve-btn.is-active' )
end
page . within '.diff-content' do
2019-09-30 21:07:59 +05:30
expect ( page ) . to have_selector ( '.btn' , text : 'Unresolve thread' )
2016-09-13 17:45:13 +05:30
end
page . within '.line-resolve-all-container' do
2019-09-30 21:07:59 +05:30
expect ( page ) . to have_content ( '1/1 thread resolved' )
2016-09-13 17:45:13 +05:30
expect ( page ) . to have_selector ( '.line-resolve-btn.is-active' )
end
end
2019-09-30 21:07:59 +05:30
it 'allows user to mark thread as resolved' do
2016-09-13 17:45:13 +05:30
page . within '.diff-content' do
2019-09-30 21:07:59 +05:30
click_button 'Resolve thread'
2016-09-13 17:45:13 +05:30
end
page . within '.diff-content .note' do
expect ( page ) . to have_selector ( '.line-resolve-btn.is-active' )
end
page . within '.line-resolve-all-container' do
2019-09-30 21:07:59 +05:30
expect ( page ) . to have_content ( '1/1 thread resolved' )
2016-09-13 17:45:13 +05:30
expect ( page ) . to have_selector ( '.line-resolve-btn.is-active' )
end
end
2019-09-30 21:07:59 +05:30
it 'allows user to unresolve thread' do
2016-09-13 17:45:13 +05:30
page . within '.diff-content' do
2019-09-30 21:07:59 +05:30
click_button 'Resolve thread'
click_button 'Unresolve thread'
2016-09-13 17:45:13 +05:30
end
page . within '.line-resolve-all-container' do
2019-09-30 21:07:59 +05:30
expect ( page ) . to have_content ( '0/1 thread resolved' )
2016-09-13 17:45:13 +05:30
end
end
2019-09-30 21:07:59 +05:30
it 'allows user to comment & resolve thread' do
2016-09-13 17:45:13 +05:30
page . within '.diff-content' do
click_button 'Reply...'
find ( '.js-note-text' ) . set 'testing'
2019-09-30 21:07:59 +05:30
click_button 'Comment & resolve thread'
2016-09-13 17:45:13 +05:30
end
page . within '.line-resolve-all-container' do
2019-09-30 21:07:59 +05:30
expect ( page ) . to have_content ( '1/1 thread resolved' )
2016-09-13 17:45:13 +05:30
expect ( page ) . to have_selector ( '.line-resolve-btn.is-active' )
end
end
2019-09-30 21:07:59 +05:30
it 'allows user to comment & unresolve thread' do
2016-09-13 17:45:13 +05:30
page . within '.diff-content' do
2019-09-30 21:07:59 +05:30
click_button 'Resolve thread'
2016-09-13 17:45:13 +05:30
click_button 'Reply...'
find ( '.js-note-text' ) . set 'testing'
2019-09-30 21:07:59 +05:30
click_button 'Comment & unresolve thread'
2016-09-13 17:45:13 +05:30
end
page . within '.line-resolve-all-container' do
2019-09-30 21:07:59 +05:30
expect ( page ) . to have_content ( '0/1 thread resolved' )
2016-09-13 17:45:13 +05:30
end
end
end
end
context 'as a guest' do
before do
2018-03-17 18:26:18 +05:30
project . add_guest ( guest )
sign_in ( guest )
2016-09-13 17:45:13 +05:30
end
context 'someone elses merge request' do
before do
visit_merge_request
end
it 'does not allow user to mark note as resolved' do
page . within '.diff-content .note' do
expect ( page ) . not_to have_selector ( '.line-resolve-btn' )
end
page . within '.line-resolve-all-container' do
2019-09-30 21:07:59 +05:30
expect ( page ) . to have_content ( '0/1 thread resolved' )
2016-09-13 17:45:13 +05:30
end
end
2019-09-30 21:07:59 +05:30
it 'does not allow user to mark thread as resolved' do
2016-09-13 17:45:13 +05:30
page . within '.diff-content .note' do
2019-09-30 21:07:59 +05:30
expect ( page ) . not_to have_selector ( '.btn' , text : 'Resolve thread' )
2016-09-13 17:45:13 +05:30
end
end
end
context 'guest users merge request' do
2018-03-17 18:26:18 +05:30
let ( :user ) { guest }
2016-09-13 17:45:13 +05:30
before do
2018-03-17 18:26:18 +05:30
visit_merge_request
2016-09-13 17:45:13 +05:30
end
it 'allows user to mark a note as resolved' do
page . within '.diff-content .note' do
find ( '.line-resolve-btn' ) . click
expect ( page ) . to have_selector ( '.line-resolve-btn.is-active' )
end
page . within '.diff-content' do
2019-09-30 21:07:59 +05:30
expect ( page ) . to have_selector ( '.btn' , text : 'Unresolve thread' )
2016-09-13 17:45:13 +05:30
end
page . within '.line-resolve-all-container' do
2019-09-30 21:07:59 +05:30
expect ( page ) . to have_content ( '1/1 thread resolved' )
2016-09-13 17:45:13 +05:30
expect ( page ) . to have_selector ( '.line-resolve-btn.is-active' )
end
end
end
end
context 'unauthorized user' do
context 'no resolved comments' do
before do
visit_merge_request
end
it 'does not allow user to mark note as resolved' do
page . within '.diff-content .note' do
expect ( page ) . not_to have_selector ( '.line-resolve-btn' )
end
page . within '.line-resolve-all-container' do
2019-09-30 21:07:59 +05:30
expect ( page ) . to have_content ( '0/1 thread resolved' )
2016-09-13 17:45:13 +05:30
end
end
end
context 'resolved comment' do
before do
note . resolve! ( user )
visit_merge_request
end
it 'shows resolved icon' do
2019-09-30 21:07:59 +05:30
expect ( page ) . to have_content '1/1 thread resolved'
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
click_button 'Toggle thread'
2016-09-13 17:45:13 +05:30
expect ( page ) . to have_selector ( '.line-resolve-btn.is-active' )
end
it 'does not allow user to click resolve button' do
expect ( page ) . to have_selector ( '.line-resolve-btn.is-disabled' )
2019-09-30 21:07:59 +05:30
click_button 'Toggle thread'
2016-09-13 17:45:13 +05:30
expect ( page ) . to have_selector ( '.line-resolve-btn.is-disabled' )
end
end
end
def visit_merge_request ( mr = nil )
2018-03-17 18:26:18 +05:30
mr || = merge_request
2017-09-10 17:25:29 +05:30
visit project_merge_request_path ( mr . project , mr )
2016-09-13 17:45:13 +05:30
end
end