Commit fc676141 authored by Fatih Acet's avatar Fatih Acet

Merge branch 'ce-issue_7526' into 'master'

[EE Backport] Add notes filters for epics

See merge request gitlab-org/gitlab-ce!24372
parents efdbbc52 d99d6494
...@@ -280,7 +280,7 @@ Additionally locked issues can not be reopened. ...@@ -280,7 +280,7 @@ Additionally locked issues can not be reopened.
For issues with many comments like activity notes and user comments, sometimes For issues with many comments like activity notes and user comments, sometimes
finding useful information can be hard. There is a way to filter comments from single notes and discussions for merge requests and issues. finding useful information can be hard. There is a way to filter comments from single notes and discussions for merge requests and issues.
From a merge request's **Discussion** tab, or from an issue overview, find the filter's dropdown menu on the right side of the page, from which you can choose one of the following options: From a merge request's **Discussion** tab, or from an epic/issue overview, find the filter's dropdown menu on the right side of the page, from which you can choose one of the following options:
- **Show all activity**: displays all user comments and system notes - **Show all activity**: displays all user comments and system notes
(issue updates, mentions from other issues, changes to the description, etc). (issue updates, mentions from other issues, changes to the description, etc).
......
...@@ -1118,6 +1118,7 @@ describe Projects::IssuesController do ...@@ -1118,6 +1118,7 @@ describe Projects::IssuesController do
context 'when user is setting notes filters' do context 'when user is setting notes filters' do
let(:issuable) { issue } let(:issuable) { issue }
let(:issuable_parent) { project }
let!(:discussion_note) { create(:discussion_note_on_issue, :system, noteable: issuable, project: project) } let!(:discussion_note) { create(:discussion_note_on_issue, :system, noteable: issuable, project: project) }
it_behaves_like 'issuable notes filter' it_behaves_like 'issuable notes filter'
......
...@@ -78,6 +78,7 @@ describe Projects::MergeRequestsController do ...@@ -78,6 +78,7 @@ describe Projects::MergeRequestsController do
context 'when user is setting notes filters' do context 'when user is setting notes filters' do
let(:issuable) { merge_request } let(:issuable) { merge_request }
let(:issuable_parent) { project }
let!(:discussion_note) { create(:discussion_note_on_merge_request, :system, noteable: issuable, project: project) } let!(:discussion_note) { create(:discussion_note_on_merge_request, :system, noteable: issuable, project: project) }
let!(:discussion_comment) { create(:discussion_note_on_merge_request, noteable: issuable, project: project) } let!(:discussion_comment) { create(:discussion_note_on_merge_request, noteable: issuable, project: project) }
......
shared_examples 'issuable notes filter' do shared_examples 'issuable notes filter' do
let(:params) do
if issuable_parent.is_a?(Project)
{ namespace_id: issuable_parent.namespace, project_id: issuable_parent, id: issuable.iid }
else
{ group_id: issuable_parent, id: issuable.to_param }
end
end
it 'sets discussion filter' do it 'sets discussion filter' do
notes_filter = UserPreference::NOTES_FILTERS[:only_comments] notes_filter = UserPreference::NOTES_FILTERS[:only_comments]
get :discussions, params: { namespace_id: project.namespace, project_id: project, id: issuable.iid, notes_filter: notes_filter } get :discussions, params: params.merge(notes_filter: notes_filter)
expect(user.reload.notes_filter_for(issuable)).to eq(notes_filter) expect(user.reload.notes_filter_for(issuable)).to eq(notes_filter)
expect(UserPreference.count).to eq(1) expect(UserPreference.count).to eq(1)
...@@ -13,7 +21,7 @@ shared_examples 'issuable notes filter' do ...@@ -13,7 +21,7 @@ shared_examples 'issuable notes filter' do
expect_any_instance_of(issuable.class).to receive(:expire_note_etag_cache) expect_any_instance_of(issuable.class).to receive(:expire_note_etag_cache)
get :discussions, params: { namespace_id: project.namespace, project_id: project, id: issuable.iid, notes_filter: notes_filter } get :discussions, params: params.merge(notes_filter: notes_filter)
end end
it 'does not expires notes e-tag cache for issuable if filter did not change' do it 'does not expires notes e-tag cache for issuable if filter did not change' do
...@@ -22,14 +30,14 @@ shared_examples 'issuable notes filter' do ...@@ -22,14 +30,14 @@ shared_examples 'issuable notes filter' do
expect_any_instance_of(issuable.class).not_to receive(:expire_note_etag_cache) expect_any_instance_of(issuable.class).not_to receive(:expire_note_etag_cache)
get :discussions, params: { namespace_id: project.namespace, project_id: project, id: issuable.iid, notes_filter: notes_filter } get :discussions, params: params.merge(notes_filter: notes_filter)
end end
it 'does not set notes filter when database is in read only mode' do it 'does not set notes filter when database is in read only mode' do
allow(Gitlab::Database).to receive(:read_only?).and_return(true) allow(Gitlab::Database).to receive(:read_only?).and_return(true)
notes_filter = UserPreference::NOTES_FILTERS[:only_comments] notes_filter = UserPreference::NOTES_FILTERS[:only_comments]
get :discussions, params: { namespace_id: project.namespace, project_id: project, id: issuable.iid, notes_filter: notes_filter } get :discussions, params: params.merge(notes_filter: notes_filter)
expect(user.reload.notes_filter_for(issuable)).to eq(0) expect(user.reload.notes_filter_for(issuable)).to eq(0)
end end
...@@ -37,7 +45,7 @@ shared_examples 'issuable notes filter' do ...@@ -37,7 +45,7 @@ shared_examples 'issuable notes filter' do
it 'returns only user comments' do it 'returns only user comments' do
user.set_notes_filter(UserPreference::NOTES_FILTERS[:only_comments], issuable) user.set_notes_filter(UserPreference::NOTES_FILTERS[:only_comments], issuable)
get :discussions, params: { namespace_id: project.namespace, project_id: project, id: issuable.iid } get :discussions, params: params
discussions = JSON.parse(response.body) discussions = JSON.parse(response.body)
expect(discussions.count).to eq(1) expect(discussions.count).to eq(1)
...@@ -47,7 +55,7 @@ shared_examples 'issuable notes filter' do ...@@ -47,7 +55,7 @@ shared_examples 'issuable notes filter' do
it 'returns only activity notes' do it 'returns only activity notes' do
user.set_notes_filter(UserPreference::NOTES_FILTERS[:only_activity], issuable) user.set_notes_filter(UserPreference::NOTES_FILTERS[:only_activity], issuable)
get :discussions, params: { namespace_id: project.namespace, project_id: project, id: issuable.iid } get :discussions, params: params
discussions = JSON.parse(response.body) discussions = JSON.parse(response.body)
expect(discussions.count).to eq(1) expect(discussions.count).to eq(1)
...@@ -60,7 +68,7 @@ shared_examples 'issuable notes filter' do ...@@ -60,7 +68,7 @@ shared_examples 'issuable notes filter' do
expect(ResourceEvents::MergeIntoNotesService).not_to receive(:new) expect(ResourceEvents::MergeIntoNotesService).not_to receive(:new)
get :discussions, params: { namespace_id: project.namespace, project_id: project, id: issuable.iid } get :discussions, params: params
end 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