Commit 2d554f42f07a9bebcb6d43ace2cdeedcc54e8de9
Committed by
Jacob Carlborg
1 parent
138e2a50
Exists in
spb-stable
and in
3 other branches
Add button for toggling inline comments in diff view.
This is useful when there are many comments and they're becoming a distraction when trying to read the diff.
Showing
7 changed files
with
154 additions
and
4 deletions
Show diff stats
app/assets/stylesheets/sections/commits.scss
app/assets/stylesheets/sections/notes.scss
... | ... | @@ -184,13 +184,40 @@ ul.notes { |
184 | 184 | } |
185 | 185 | } |
186 | 186 | } |
187 | + | |
188 | +.file { | |
189 | + .discussion-actions { | |
190 | + margin-right: 5px; | |
191 | + margin-top: 3px; | |
192 | + | |
193 | + .turn-off { | |
194 | + display: inherit; | |
195 | + } | |
196 | + .turn-on { | |
197 | + display: none; | |
198 | + } | |
199 | + } | |
200 | + | |
201 | + &.open .discussion-actions { | |
202 | + .turn-off { | |
203 | + display: none; | |
204 | + } | |
205 | + .turn-on { | |
206 | + display: inherit; | |
207 | + } | |
208 | + } | |
209 | + | |
210 | + &[id^="diff"] .content { | |
211 | + display: block; | |
212 | + } | |
213 | +} | |
214 | + | |
187 | 215 | .file .note .note-actions { |
188 | 216 | right: 0; |
189 | 217 | top: 0; |
190 | 218 | } |
191 | 219 | |
192 | 220 | |
193 | - | |
194 | 221 | /** |
195 | 222 | * Line note button on the side of diffs |
196 | 223 | */ | ... | ... |
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 | - .file{id: "diff-#{i}"} | |
47 | + .file.js-details-container.js-toggle-container.open{id: "diff-#{i}"} | |
48 | 48 | .header |
49 | 49 | - if diff.deleted_file |
50 | 50 | %span= diff.old_path |
... | ... | @@ -62,6 +62,14 @@ |
62 | 62 | View file @ |
63 | 63 | %span.commit-short-id= @commit.short_id(6) |
64 | 64 | |
65 | + .discussion-actions.pull-right | |
66 | + = link_to "javascript:;", class: "js-details-target js-toggle-button turn-on" do | |
67 | + %i.icon-eye-close | |
68 | + Hide inline discussion | |
69 | + = link_to "javascript:;", class: "js-details-target js-toggle-button turn-off" do | |
70 | + %i.icon-eye-open | |
71 | + Show inline discussion | |
72 | + | |
65 | 73 | .content |
66 | 74 | -# Skipp all non non-supported blobs |
67 | 75 | - next unless file.respond_to?('text?') | ... | ... |
app/views/projects/notes/_diff_notes_with_reply.html.haml
app/views/projects/notes/_diff_notes_with_reply_parallel.html.haml
features/project/merge_requests.feature
... | ... | @@ -88,3 +88,47 @@ Feature: Project Merge Requests |
88 | 88 | Given I visit merge request page "Bug NS-04" |
89 | 89 | And I leave a comment with a header containing "Comment with a header" |
90 | 90 | Then The comment with the header should not have an ID |
91 | + | |
92 | + # Toggling inline comments | |
93 | + | |
94 | + @javascript | |
95 | + Scenario: I hide comments on a merge request diff with comments in a single file | |
96 | + Given project "Shop" have "Bug NS-05" open merge request with diffs inside | |
97 | + And I visit merge request page "Bug NS-05" | |
98 | + And I switch to the diff tab | |
99 | + And I leave a comment like "Line is wrong" on line 39 of the second file | |
100 | + And I click link "Hide inline discussion" of the second file | |
101 | + Then I should not see a comment like "Line is wrong" in the second file | |
102 | + | |
103 | + @javascript | |
104 | + Scenario: I show comments on a merge request diff with comments in a single file | |
105 | + Given project "Shop" have "Bug NS-05" open merge request with diffs inside | |
106 | + And I visit merge request page "Bug NS-05" | |
107 | + And I switch to the diff tab | |
108 | + And I leave a comment like "Line is wrong" on line 39 of the second file | |
109 | + And I click link "Hide inline discussion" of the second file | |
110 | + And I click link "Show inline discussion" of the second file | |
111 | + Then I should see a comment like "Line is wrong" in the second file | |
112 | + | |
113 | + @javascript | |
114 | + Scenario: I hide comments on a merge request diff with comments in multiple files | |
115 | + Given project "Shop" have "Bug NS-05" open merge request with diffs inside | |
116 | + And I visit merge request page "Bug NS-05" | |
117 | + And I switch to the diff tab | |
118 | + And I leave a comment like "Line is correct" on line 12 of the first file | |
119 | + And I leave a comment like "Line is wrong" on line 39 of the second file | |
120 | + And I click link "Hide inline discussion" of the second file | |
121 | + Then I should not see a comment like "Line is wrong" in the second file | |
122 | + And I should still see a comment like "Line is correct" in the first file | |
123 | + | |
124 | + @javascript | |
125 | + Scenario: I show comments on a merge request diff with comments in multiple files | |
126 | + Given project "Shop" have "Bug NS-05" open merge request with diffs inside | |
127 | + And I visit merge request page "Bug NS-05" | |
128 | + And I switch to the diff tab | |
129 | + And I leave a comment like "Line is correct" on line 12 of the first file | |
130 | + And I leave a comment like "Line is wrong" on line 39 of the second file | |
131 | + And I click link "Hide inline discussion" of the second file | |
132 | + And I click link "Show inline discussion" of the second file | |
133 | + Then I should see a comment like "Line is wrong" in the second file | |
134 | + And I should still see a comment like "Line is correct" in the first file | ... | ... |
features/steps/project/project_merge_requests.rb
... | ... | @@ -170,6 +170,62 @@ class ProjectMergeRequests < Spinach::FeatureSteps |
170 | 170 | end |
171 | 171 | end |
172 | 172 | |
173 | + step 'I click link "Hide inline discussion" of the second file' do | |
174 | + within '.files [id^=diff]:nth-child(2)' do | |
175 | + click_link "Hide inline discussion" | |
176 | + end | |
177 | + end | |
178 | + | |
179 | + step 'I click link "Show inline discussion" of the second file' do | |
180 | + within '.files [id^=diff]:nth-child(2)' do | |
181 | + click_link "Show inline discussion" | |
182 | + end | |
183 | + end | |
184 | + | |
185 | + step 'I should not see a comment like "Line is wrong" in the second file' do | |
186 | + within '.files [id^=diff]:nth-child(2)' do | |
187 | + page.should_not have_visible_content "Line is wrong" | |
188 | + end | |
189 | + end | |
190 | + | |
191 | + step 'I should see a comment like "Line is wrong" in the second file' do | |
192 | + within '.files [id^=diff]:nth-child(2) .note-text' do | |
193 | + page.should have_visible_content "Line is wrong" | |
194 | + end | |
195 | + end | |
196 | + | |
197 | + step 'I leave a comment like "Line is correct" on line 12 of the first file' do | |
198 | + init_diff_note_first_file | |
199 | + | |
200 | + within(".js-discussion-note-form") do | |
201 | + fill_in "note_note", with: "Line is correct" | |
202 | + click_button "Add Comment" | |
203 | + end | |
204 | + | |
205 | + within ".files [id^=diff]:nth-child(1) .note-text" do | |
206 | + page.should have_content "Line is correct" | |
207 | + end | |
208 | + end | |
209 | + | |
210 | + step 'I leave a comment like "Line is wrong" on line 39 of the second file' do | |
211 | + init_diff_note_second_file | |
212 | + | |
213 | + within(".js-discussion-note-form") do | |
214 | + fill_in "note_note", with: "Line is wrong" | |
215 | + click_button "Add Comment" | |
216 | + end | |
217 | + | |
218 | + within ".files [id^=diff]:nth-child(2) .note-text" do | |
219 | + page.should have_content "Line is wrong" | |
220 | + end | |
221 | + end | |
222 | + | |
223 | + step 'I should still see a comment like "Line is correct" in the first file' do | |
224 | + within '.files [id^=diff]:nth-child(1) .note-text' do | |
225 | + page.should have_visible_content "Line is correct" | |
226 | + end | |
227 | + end | |
228 | + | |
173 | 229 | def project |
174 | 230 | @project ||= Project.find_by!(name: "Shop") |
175 | 231 | end |
... | ... | @@ -192,4 +248,16 @@ class ProjectMergeRequests < Spinach::FeatureSteps |
192 | 248 | page.should have_content message |
193 | 249 | end |
194 | 250 | end |
251 | + | |
252 | + def init_diff_note_first_file | |
253 | + find('a[data-line-code="a5cc2925ca8258af241be7e5b0381edf30266302_12_12"]').click | |
254 | + end | |
255 | + | |
256 | + def init_diff_note_second_file | |
257 | + find('a[data-line-code="8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d_28_39"]').click | |
258 | + end | |
259 | + | |
260 | + def have_visible_content (text) | |
261 | + have_css("*", text: text, visible: true) | |
262 | + end | |
195 | 263 | end | ... | ... |