Fix view of notes in search results when noteable is a snippet
Also, streamline the view. Signed-off-by: Rémy Coutable <remy@rymai.me>
This commit is contained in:
		
							parent
							
								
									091b8a6ede
								
							
						
					
					
						commit
						e60f034126
					
				|  | @ -14,6 +14,9 @@ v 8.7.0 (unreleased) | ||||||
|   - Implement 'TODOs View' as an option for dashboard preferences !3379 (Elias W.) |   - Implement 'TODOs View' as an option for dashboard preferences !3379 (Elias W.) | ||||||
|   - Gracefully handle notes on deleted commits in merge requests (Stan Hu) |   - Gracefully handle notes on deleted commits in merge requests (Stan Hu) | ||||||
| 
 | 
 | ||||||
|  | v 8.6.3 (unreleased) | ||||||
|  |   - Fix Error 500 when searching for a comment in a project snippet. !3468 | ||||||
|  | 
 | ||||||
| v 8.6.2 | v 8.6.2 | ||||||
|   - Fix dropdown alignment. !3298 |   - Fix dropdown alignment. !3298 | ||||||
|   - Fix issuable sidebar overlaps on tablet. !3299 |   - Fix issuable sidebar overlaps on tablet. !3299 | ||||||
|  |  | ||||||
|  | @ -1,24 +1,20 @@ | ||||||
| - project = note.project | - project = note.project | ||||||
|  | - note_url = Gitlab::UrlBuilder.new(:note).build(note.id) | ||||||
|  | - noteable_identifier = note.noteable.try(:iid) || note.noteable.id | ||||||
| .search-result-row | .search-result-row | ||||||
|   %h5.note-search-caption.str-truncated |   %h5.note-search-caption.str-truncated | ||||||
|     %i.fa.fa-comment |     %i.fa.fa-comment | ||||||
|     = link_to_member(project, note.author, avatar: false) |     = link_to_member(project, note.author, avatar: false) | ||||||
|     commented on |     commented on | ||||||
|  |     = link_to project.name_with_namespace, project | ||||||
|  |     · | ||||||
| 
 | 
 | ||||||
|     - if note.for_commit? |     - if note.for_commit? | ||||||
|       = link_to project do |       = link_to "Commit #{truncate_sha(note.commit_id)}", note_url | ||||||
|         = project.name_with_namespace |  | ||||||
|       · |  | ||||||
|       = link_to namespace_project_commit_path(project.namespace, project, note.commit_id, anchor: dom_id(note)) do |  | ||||||
|         Commit #{truncate_sha(note.commit_id)} |  | ||||||
|     - else |     - else | ||||||
|       = link_to project do |       %span #{note.noteable_type.titleize} ##{noteable_identifier} | ||||||
|         = project.name_with_namespace |  | ||||||
|       · |       · | ||||||
|       %span #{note.noteable_type.titleize} ##{note.noteable.iid} |       = link_to note.noteable.title, note_url | ||||||
|       · |  | ||||||
|       = link_to [project.namespace.becomes(Namespace), project, note.noteable, anchor: dom_id(note)]  do |  | ||||||
|         = note.noteable.title |  | ||||||
| 
 | 
 | ||||||
|   .note-search-result |   .note-search-result | ||||||
|     .term |     .term | ||||||
|  |  | ||||||
|  | @ -2,6 +2,7 @@ module Gitlab | ||||||
|   class UrlBuilder |   class UrlBuilder | ||||||
|     include Gitlab::Application.routes.url_helpers |     include Gitlab::Application.routes.url_helpers | ||||||
|     include GitlabRoutingHelper |     include GitlabRoutingHelper | ||||||
|  |     include ActionView::RecordIdentifier | ||||||
| 
 | 
 | ||||||
|     def initialize(type) |     def initialize(type) | ||||||
|       @type = type |       @type = type | ||||||
|  | @ -37,19 +38,16 @@ module Gitlab | ||||||
|         namespace_project_commit_url(namespace_id: note.project.namespace, |         namespace_project_commit_url(namespace_id: note.project.namespace, | ||||||
|                                      id: note.commit_id, |                                      id: note.commit_id, | ||||||
|                                      project_id: note.project, |                                      project_id: note.project, | ||||||
|                                      anchor: "note_#{note.id}") |                                      anchor: dom_id(note)) | ||||||
|       elsif note.for_issue? |       elsif note.for_issue? | ||||||
|         issue = Issue.find(note.noteable_id) |         issue = Issue.find(note.noteable_id) | ||||||
|         issue_url(issue, |         issue_url(issue, anchor: dom_id(note)) | ||||||
|                   anchor: "note_#{note.id}") |  | ||||||
|       elsif note.for_merge_request? |       elsif note.for_merge_request? | ||||||
|         merge_request = MergeRequest.find(note.noteable_id) |         merge_request = MergeRequest.find(note.noteable_id) | ||||||
|         merge_request_url(merge_request, |         merge_request_url(merge_request, anchor: dom_id(note)) | ||||||
|                           anchor: "note_#{note.id}") |  | ||||||
|       elsif note.for_snippet? |       elsif note.for_snippet? | ||||||
|         snippet = Snippet.find(note.noteable_id) |         snippet = Snippet.find(note.noteable_id) | ||||||
|         project_snippet_url(snippet, |         project_snippet_url(snippet, anchor: dom_id(note)) | ||||||
|                             anchor: "note_#{note.id}") |  | ||||||
|       end |       end | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
|  |  | ||||||
|  | @ -1,19 +1,46 @@ | ||||||
| require 'spec_helper' | require 'spec_helper' | ||||||
| 
 | 
 | ||||||
| describe "Search", feature: true  do | describe "Search", feature: true  do | ||||||
|   before do |   let(:user) { create(:user) } | ||||||
|     login_as :user |   let(:project) { create(:project, namespace: user.namespace) } | ||||||
|     @project = create(:project, namespace: @user.namespace) |  | ||||||
|     @project.team << [@user, :reporter] |  | ||||||
|     visit search_path |  | ||||||
| 
 | 
 | ||||||
|     page.within '.search-holder' do |   before do | ||||||
|       fill_in "search", with: @project.name[0..3] |     login_with(user) | ||||||
|       click_button "Search" |     project.team << [user, :reporter] | ||||||
|  |     visit search_path | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   describe 'searching for Projects' do | ||||||
|  |     it 'finds a project' do | ||||||
|  |       page.within '.search-holder' do | ||||||
|  |         fill_in "search", with: project.name[0..3] | ||||||
|  |         click_button "Search" | ||||||
|  |       end | ||||||
|  | 
 | ||||||
|  |       expect(page).to have_content project.name | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   it "should show project in search results" do |   context 'search for comments' do | ||||||
|     expect(page).to have_content @project.name |     it 'finds a snippet' do | ||||||
|  |       snippet = create(:project_snippet, :private, project: project, author: user, title: 'Some title') | ||||||
|  |       note = create(:note, | ||||||
|  |                     noteable: snippet, | ||||||
|  |                     author: user, | ||||||
|  |                     note: 'Supercalifragilisticexpialidocious', | ||||||
|  |                     project: project) | ||||||
|  |       # Must visit project dashboard since global search won't search | ||||||
|  |       # everything (e.g. comments, snippets, etc.) | ||||||
|  |       visit namespace_project_path(project.namespace, project) | ||||||
|  | 
 | ||||||
|  |       page.within '.search' do | ||||||
|  |         fill_in 'search', with: note.note | ||||||
|  |         click_button 'Go' | ||||||
|  |       end | ||||||
|  | 
 | ||||||
|  |       click_link 'Comments' | ||||||
|  | 
 | ||||||
|  |       expect(page).to have_link(snippet.title) | ||||||
|  |     end | ||||||
|   end |   end | ||||||
| end | end | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue