summaryrefslogtreecommitdiff
path: root/spec/features/merge_request/user_resolves_outdated_diff_discussions_spec.rb
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2017-08-01 20:03:07 +0200
committerRémy Coutable <remy@rymai.me>2018-01-18 15:07:57 +0100
commit799cd471099e032a60fbdb1ba6841e617f6c122f (patch)
treee18e25e7ec82f9fb35bad04890e57c21a69097af /spec/features/merge_request/user_resolves_outdated_diff_discussions_spec.rb
parent50a649530a53a04d2044f9e4c5502586a7ed0c59 (diff)
downloadgitlab-ce-799cd471099e032a60fbdb1ba6841e617f6c122f.tar.gz
Improve MR feature specs and reduce duplicationrc/improve-mr-feature-specs
Signed-off-by: Rémy Coutable <remy@rymai.me>
Diffstat (limited to 'spec/features/merge_request/user_resolves_outdated_diff_discussions_spec.rb')
-rw-r--r--spec/features/merge_request/user_resolves_outdated_diff_discussions_spec.rb78
1 files changed, 78 insertions, 0 deletions
diff --git a/spec/features/merge_request/user_resolves_outdated_diff_discussions_spec.rb b/spec/features/merge_request/user_resolves_outdated_diff_discussions_spec.rb
new file mode 100644
index 00000000000..9ba9e8b9585
--- /dev/null
+++ b/spec/features/merge_request/user_resolves_outdated_diff_discussions_spec.rb
@@ -0,0 +1,78 @@
+require 'spec_helper'
+
+feature 'Merge request > User resolves outdated diff discussions', :js do
+ let(:project) { create(:project, :repository, :public) }
+
+ let(:merge_request) do
+ create(:merge_request, source_project: project, source_branch: 'csv', target_branch: 'master')
+ end
+
+ let(:outdated_diff_refs) { project.commit('926c6595b263b2a40da6b17f3e3b7ea08344fad6').diff_refs }
+ let(:current_diff_refs) { merge_request.diff_refs }
+
+ let(:outdated_position) do
+ Gitlab::Diff::Position.new(
+ old_path: 'files/csv/Book1.csv',
+ new_path: 'files/csv/Book1.csv',
+ old_line: nil,
+ new_line: 9,
+ diff_refs: outdated_diff_refs
+ )
+ end
+
+ let(:current_position) do
+ Gitlab::Diff::Position.new(
+ old_path: 'files/csv/Book1.csv',
+ new_path: 'files/csv/Book1.csv',
+ old_line: nil,
+ new_line: 1,
+ diff_refs: current_diff_refs
+ )
+ end
+
+ let!(:outdated_discussion) do
+ create(:diff_note_on_merge_request,
+ project: project,
+ noteable: merge_request,
+ position: outdated_position).to_discussion
+ end
+
+ let!(:current_discussion) do
+ create(:diff_note_on_merge_request,
+ noteable: merge_request,
+ project: project,
+ position: current_position).to_discussion
+ end
+
+ before do
+ sign_in(merge_request.author)
+ end
+
+ context 'when a discussion was resolved by a push' do
+ before do
+ project.update!(resolve_outdated_diff_discussions: true)
+
+ merge_request.update_diff_discussion_positions(
+ old_diff_refs: outdated_diff_refs,
+ new_diff_refs: current_diff_refs,
+ current_user: merge_request.author
+ )
+
+ visit project_merge_request_path(project, merge_request)
+ end
+
+ it 'shows that as automatically resolved' do
+ within(".discussion[data-discussion-id='#{outdated_discussion.id}']") do
+ expect(page).to have_css('.discussion-body', visible: false)
+ expect(page).to have_content('Automatically resolved')
+ end
+ end
+
+ it 'does not show that for active discussions' do
+ within(".discussion[data-discussion-id='#{current_discussion.id}']") do
+ expect(page).to have_css('.discussion-body', visible: true)
+ expect(page).not_to have_content('Automatically resolved')
+ end
+ end
+ end
+end