Commit e60f0341 authored by Rémy Coutable's avatar Rémy Coutable

Fix view of notes in search results when noteable is a snippet

Also, streamline the view.
Signed-off-by: default avatarRémy Coutable <remy@rymai.me>
parent 091b8a6e
...@@ -14,6 +14,9 @@ v 8.7.0 (unreleased) ...@@ -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
......
- 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
&middot;
- 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
&middot;
= 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
&middot;
%span #{note.noteable_type.titleize} ##{note.noteable.iid}
&middot; &middot;
= link_to [project.namespace.becomes(Namespace), project, note.noteable, anchor: dom_id(note)] do = link_to note.noteable.title, note_url
= note.noteable.title
.note-search-result .note-search-result
.term .term
......
...@@ -2,6 +2,7 @@ module Gitlab ...@@ -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 ...@@ -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
......
require 'spec_helper' require 'spec_helper'
describe "Search", feature: true do describe "Search", feature: true do
let(:user) { create(:user) }
let(:project) { create(:project, namespace: user.namespace) }
before do before do
login_as :user login_with(user)
@project = create(:project, namespace: @user.namespace) project.team << [user, :reporter]
@project.team << [@user, :reporter]
visit search_path visit search_path
end
page.within '.search-holder' do describe 'searching for Projects' do
fill_in "search", with: @project.name[0..3] it 'finds a project' do
click_button "Search" 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
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment