Merge branch 'ce-issue_7526' into 'master'

[EE Backport] Add notes filters for epics

See merge request gitlab-org/gitlab-ce!24372
This commit is contained in:
Fatih Acet 2019-01-18 14:02:19 +00:00
commit fc67614164
4 changed files with 18 additions and 8 deletions

View File

@ -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).

View File

@ -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'

View File

@ -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) }

View File

@ -1,8 +1,16 @@
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
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
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
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
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
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