Commit 2a7da96a0d7fb71a1371ce2d97157a2dd8a766f2

Authored by Dmitriy Zaporozhets
2 parents c8e1c53f 2d554f42

Merge branch 'toggle_diff_comments' of https://github.com/jacob-carlborg/gitlabh…

…q into jacob-carlborg-toggle_diff_comments

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>

Conflicts:
	app/assets/stylesheets/sections/commits.scss
	app/assets/stylesheets/sections/notes.scss
	app/views/projects/commits/_diffs.html.haml
	features/steps/project/merge_requests.rb
app/assets/stylesheets/sections/notes.scss
... ... @@ -189,7 +189,6 @@ ul.notes {
189 189 }
190 190  
191 191  
192   -
193 192 /**
194 193 * Line note button on the side of diffs
195 194 */
... ...
app/views/projects/commits/_diffs.html.haml
... ... @@ -44,7 +44,7 @@
44 44 - file = project.repository.blob_at(@commit.id, diff.new_path)
45 45 - file = project.repository.blob_at(@commit.parent_id, diff.old_path) unless file
46 46 - next unless file
47   - .diff-file{id: "diff-#{i}"}
  47 + .diff-file.js-toggle-container{id: "diff-#{i}"}
48 48 .diff-header{id: "file-path-#{hexdigest(diff.new_path || diff.old_path)}"}
49 49 - if diff.deleted_file
50 50 %span= diff.old_path
... ... @@ -60,6 +60,11 @@
60 60 %span.file-mode= "#{diff.a_mode} → #{diff.b_mode}"
61 61  
62 62 .diff-btn-group
  63 + = link_to "#", class: "js-toggle-button btn btn-small" do
  64 + %i.icon-chevron-down
  65 + Diff comments
  66 + &nbsp;
  67 +
63 68 - if @merge_request && @merge_request.source_project
64 69 = link_to project_edit_tree_path(@merge_request.source_project, tree_join(@merge_request.source_branch, diff.new_path), from_merge_request_id: @merge_request.id), { class: 'btn btn-small' } do
65 70 Edit
... ...
app/views/projects/notes/_diff_notes_with_reply.html.haml
1 1 - note = notes.first # example note
2 2 -# Check if line want not changed since comment was left
3 3 - if !defined?(line) || line == note.diff_line
4   - %tr.notes_holder
  4 + %tr.notes_holder.js-toggle-content
5 5 %td.notes_line{ colspan: 2 }
6 6 %span.btn.disabled
7 7 %i.icon-comment
... ...
app/views/projects/notes/_diff_notes_with_reply_parallel.html.haml
1 1 - note1 = notes1.first # example note
2 2 - note2 = notes2.first # example note
3   -%tr.notes_holder
  3 +%tr.notes_holder.js-toggle-content
4 4 -# Check if line want not changed since comment was left
5 5 /- if !defined?(line1) || line1 == note1.diff_line
6 6 - if note1
... ...
features/project/merge_requests.feature
... ... @@ -95,3 +95,47 @@ Feature: Project Merge Requests
95 95 Given I visit merge request page "Bug NS-04"
96 96 And I leave a comment with a header containing "Comment with a header"
97 97 Then The comment with the header should not have an ID
  98 +
  99 + # Toggling inline comments
  100 +
  101 + @javascript
  102 + Scenario: I hide comments on a merge request diff with comments in a single file
  103 + Given project "Shop" have "Bug NS-05" open merge request with diffs inside
  104 + And I visit merge request page "Bug NS-05"
  105 + And I switch to the diff tab
  106 + And I leave a comment like "Line is wrong" on line 39 of the second file
  107 + And I click link "Hide inline discussion" of the second file
  108 + Then I should not see a comment like "Line is wrong" in the second file
  109 +
  110 + @javascript
  111 + Scenario: I show comments on a merge request diff with comments in a single file
  112 + Given project "Shop" have "Bug NS-05" open merge request with diffs inside
  113 + And I visit merge request page "Bug NS-05"
  114 + And I switch to the diff tab
  115 + And I leave a comment like "Line is wrong" on line 39 of the second file
  116 + And I click link "Hide inline discussion" of the second file
  117 + And I click link "Show inline discussion" of the second file
  118 + Then I should see a comment like "Line is wrong" in the second file
  119 +
  120 + @javascript
  121 + Scenario: I hide comments on a merge request diff with comments in multiple files
  122 + Given project "Shop" have "Bug NS-05" open merge request with diffs inside
  123 + And I visit merge request page "Bug NS-05"
  124 + And I switch to the diff tab
  125 + And I leave a comment like "Line is correct" on line 12 of the first file
  126 + And I leave a comment like "Line is wrong" on line 39 of the second file
  127 + And I click link "Hide inline discussion" of the second file
  128 + Then I should not see a comment like "Line is wrong" in the second file
  129 + And I should still see a comment like "Line is correct" in the first file
  130 +
  131 + @javascript
  132 + Scenario: I show comments on a merge request diff with comments in multiple files
  133 + Given project "Shop" have "Bug NS-05" open merge request with diffs inside
  134 + And I visit merge request page "Bug NS-05"
  135 + And I switch to the diff tab
  136 + And I leave a comment like "Line is correct" on line 12 of the first file
  137 + And I leave a comment like "Line is wrong" on line 39 of the second file
  138 + And I click link "Hide inline discussion" of the second file
  139 + And I click link "Show inline discussion" of the second file
  140 + Then I should see a comment like "Line is wrong" in the second file
  141 + And I should still see a comment like "Line is correct" in the first file
... ...
features/steps/project/merge_requests.rb
... ... @@ -182,6 +182,62 @@ class ProjectMergeRequests &lt; Spinach::FeatureSteps
182 182 end
183 183 end
184 184  
  185 + step 'I click link "Hide inline discussion" of the second file' do
  186 + within '.files [id^=diff]:nth-child(2)' do
  187 + click_link "Diff comments"
  188 + end
  189 + end
  190 +
  191 + step 'I click link "Show inline discussion" of the second file' do
  192 + within '.files [id^=diff]:nth-child(2)' do
  193 + click_link "Diff comments"
  194 + end
  195 + end
  196 +
  197 + step 'I should not see a comment like "Line is wrong" in the second file' do
  198 + within '.files [id^=diff]:nth-child(2)' do
  199 + page.should_not have_visible_content "Line is wrong"
  200 + end
  201 + end
  202 +
  203 + step 'I should see a comment like "Line is wrong" in the second file' do
  204 + within '.files [id^=diff]:nth-child(2) .note-text' do
  205 + page.should have_visible_content "Line is wrong"
  206 + end
  207 + end
  208 +
  209 + step 'I leave a comment like "Line is correct" on line 12 of the first file' do
  210 + init_diff_note_first_file
  211 +
  212 + within(".js-discussion-note-form") do
  213 + fill_in "note_note", with: "Line is correct"
  214 + click_button "Add Comment"
  215 + end
  216 +
  217 + within ".files [id^=diff]:nth-child(1) .note-text" do
  218 + page.should have_content "Line is correct"
  219 + end
  220 + end
  221 +
  222 + step 'I leave a comment like "Line is wrong" on line 39 of the second file' do
  223 + init_diff_note_second_file
  224 +
  225 + within(".js-discussion-note-form") do
  226 + fill_in "note_note", with: "Line is wrong"
  227 + click_button "Add Comment"
  228 + end
  229 +
  230 + within ".files [id^=diff]:nth-child(2) .note-text" do
  231 + page.should have_content "Line is wrong"
  232 + end
  233 + end
  234 +
  235 + step 'I should still see a comment like "Line is correct" in the first file' do
  236 + within '.files [id^=diff]:nth-child(1) .note-text' do
  237 + page.should have_visible_content "Line is correct"
  238 + end
  239 + end
  240 +
185 241 def project
186 242 @project ||= Project.find_by!(name: "Shop")
187 243 end
... ... @@ -204,4 +260,16 @@ class ProjectMergeRequests &lt; Spinach::FeatureSteps
204 260 page.should have_content message
205 261 end
206 262 end
  263 +
  264 + def init_diff_note_first_file
  265 + find('a[data-line-code="a5cc2925ca8258af241be7e5b0381edf30266302_12_12"]').click
  266 + end
  267 +
  268 + def init_diff_note_second_file
  269 + find('a[data-line-code="8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_28_39"]').click
  270 + end
  271 +
  272 + def have_visible_content (text)
  273 + have_css("*", text: text, visible: true)
  274 + end
207 275 end
... ...