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:
commit
fc67614164
4 changed files with 18 additions and 8 deletions
|
@ -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
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
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) }
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue