Merge branch 'fix-all-dashboard' into 'master'
Don't whitelist events for all filter Closes #24826 See merge request !7673
This commit is contained in:
commit
564b166236
|
@ -4,6 +4,8 @@
|
|||
= event_filter_link EventFilter.push, 'Push events'
|
||||
- if event_filter_visible(:merge_requests)
|
||||
= event_filter_link EventFilter.merged, 'Merge events'
|
||||
- if event_filter_visible(:issues)
|
||||
= event_filter_link EventFilter.issue, 'Issue events'
|
||||
- if event_filter_visible(:issues)
|
||||
= event_filter_link EventFilter.comments, 'Comments'
|
||||
= event_filter_link EventFilter.team, 'Team'
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
title: Add issue events filter and make all really show all events
|
||||
merge_request: 7673
|
||||
author: Oxan van Leeuwen
|
|
@ -14,6 +14,10 @@ class EventFilter
|
|||
'merged'
|
||||
end
|
||||
|
||||
def issue
|
||||
'issue'
|
||||
end
|
||||
|
||||
def comments
|
||||
'comments'
|
||||
end
|
||||
|
@ -32,32 +36,20 @@ class EventFilter
|
|||
end
|
||||
|
||||
def apply_filter(events)
|
||||
return events unless params.present?
|
||||
return events if params.blank? || params == EventFilter.all
|
||||
|
||||
filter = params.dup
|
||||
actions = []
|
||||
|
||||
case filter
|
||||
case params
|
||||
when EventFilter.push
|
||||
actions = [Event::PUSHED]
|
||||
events.where(action: Event::PUSHED)
|
||||
when EventFilter.merged
|
||||
actions = [Event::MERGED]
|
||||
events.where(action: Event::MERGED)
|
||||
when EventFilter.comments
|
||||
actions = [Event::COMMENTED]
|
||||
events.where(action: Event::COMMENTED)
|
||||
when EventFilter.team
|
||||
actions = [Event::JOINED, Event::LEFT, Event::EXPIRED]
|
||||
when EventFilter.all
|
||||
actions = [
|
||||
Event::PUSHED,
|
||||
Event::MERGED,
|
||||
Event::COMMENTED,
|
||||
Event::JOINED,
|
||||
Event::LEFT,
|
||||
Event::EXPIRED
|
||||
]
|
||||
events.where(action: [Event::JOINED, Event::LEFT, Event::EXPIRED])
|
||||
when EventFilter.issue
|
||||
events.where(action: [Event::CREATED, Event::UPDATED, Event::CLOSED, Event::REOPENED])
|
||||
end
|
||||
|
||||
events.where(action: actions)
|
||||
end
|
||||
|
||||
def options(key)
|
||||
|
@ -73,6 +65,10 @@ class EventFilter
|
|||
end
|
||||
|
||||
def active?(key)
|
||||
params.include? key
|
||||
if params.present?
|
||||
params.include? key
|
||||
else
|
||||
key == EventFilter.all
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -11,6 +11,10 @@
|
|||
%a.event-filter-link{ id: "merged_event_filter", title: "Filter by merge events", href: "/dashboard/activity"}
|
||||
%span
|
||||
Merge events
|
||||
%li
|
||||
%a.event-filter-link{ id: "issue_event_filter", title: "Filter by issue events", href: "/dashboard/activity"}
|
||||
%span
|
||||
Issue events
|
||||
%li
|
||||
%a.event-filter-link{ id: "comments_event_filter", title: "Filter by comments", href: "/dashboard/activity"}
|
||||
%span
|
||||
|
|
|
@ -7,6 +7,10 @@ describe EventFilter, lib: true do
|
|||
|
||||
let!(:push_event) { create(:event, action: Event::PUSHED, project: public_project, target: public_project, author: source_user) }
|
||||
let!(:merged_event) { create(:event, action: Event::MERGED, project: public_project, target: public_project, author: source_user) }
|
||||
let!(:created_event) { create(:event, action: Event::CREATED, project: public_project, target: public_project, author: source_user) }
|
||||
let!(:updated_event) { create(:event, action: Event::UPDATED, project: public_project, target: public_project, author: source_user) }
|
||||
let!(:closed_event) { create(:event, action: Event::CLOSED, project: public_project, target: public_project, author: source_user) }
|
||||
let!(:reopened_event) { create(:event, action: Event::REOPENED, project: public_project, target: public_project, author: source_user) }
|
||||
let!(:comments_event) { create(:event, action: Event::COMMENTED, project: public_project, target: public_project, author: source_user) }
|
||||
let!(:joined_event) { create(:event, action: Event::JOINED, project: public_project, target: public_project, author: source_user) }
|
||||
let!(:left_event) { create(:event, action: Event::LEFT, project: public_project, target: public_project, author: source_user) }
|
||||
|
@ -21,6 +25,11 @@ describe EventFilter, lib: true do
|
|||
expect(events).to contain_exactly(merged_event)
|
||||
end
|
||||
|
||||
it 'applies issue filter' do
|
||||
events = EventFilter.new(EventFilter.issue).apply_filter(Event.all)
|
||||
expect(events).to contain_exactly(created_event, updated_event, closed_event, reopened_event)
|
||||
end
|
||||
|
||||
it 'applies comments filter' do
|
||||
events = EventFilter.new(EventFilter.comments).apply_filter(Event.all)
|
||||
expect(events).to contain_exactly(comments_event)
|
||||
|
@ -33,17 +42,17 @@ describe EventFilter, lib: true do
|
|||
|
||||
it 'applies all filter' do
|
||||
events = EventFilter.new(EventFilter.all).apply_filter(Event.all)
|
||||
expect(events).to contain_exactly(push_event, merged_event, comments_event, joined_event, left_event)
|
||||
expect(events).to contain_exactly(push_event, merged_event, created_event, updated_event, closed_event, reopened_event, comments_event, joined_event, left_event)
|
||||
end
|
||||
|
||||
it 'applies no filter' do
|
||||
events = EventFilter.new(nil).apply_filter(Event.all)
|
||||
expect(events).to contain_exactly(push_event, merged_event, comments_event, joined_event, left_event)
|
||||
expect(events).to contain_exactly(push_event, merged_event, created_event, updated_event, closed_event, reopened_event, comments_event, joined_event, left_event)
|
||||
end
|
||||
|
||||
it 'applies unknown filter' do
|
||||
events = EventFilter.new('').apply_filter(Event.all)
|
||||
expect(events).to contain_exactly(push_event, merged_event, comments_event, joined_event, left_event)
|
||||
expect(events).to contain_exactly(push_event, merged_event, created_event, updated_event, closed_event, reopened_event, comments_event, joined_event, left_event)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue