Commit 564b1662 authored by Sean McGivern's avatar Sean McGivern

Merge branch 'fix-all-dashboard' into 'master'

Don't whitelist events for all filter

Closes #24826

See merge request !7673
parents ef566720 bb447383
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
= event_filter_link EventFilter.push, 'Push events' = event_filter_link EventFilter.push, 'Push events'
- if event_filter_visible(:merge_requests) - if event_filter_visible(:merge_requests)
= event_filter_link EventFilter.merged, 'Merge events' = event_filter_link EventFilter.merged, 'Merge events'
- if event_filter_visible(:issues)
= event_filter_link EventFilter.issue, 'Issue events'
- if event_filter_visible(:issues) - if event_filter_visible(:issues)
= event_filter_link EventFilter.comments, 'Comments' = event_filter_link EventFilter.comments, 'Comments'
= event_filter_link EventFilter.team, 'Team' = event_filter_link EventFilter.team, 'Team'
---
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 ...@@ -14,6 +14,10 @@ class EventFilter
'merged' 'merged'
end end
def issue
'issue'
end
def comments def comments
'comments' 'comments'
end end
...@@ -32,32 +36,20 @@ class EventFilter ...@@ -32,32 +36,20 @@ class EventFilter
end end
def apply_filter(events) 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 when EventFilter.push
actions = [Event::PUSHED] events.where(action: Event::PUSHED)
when EventFilter.merged when EventFilter.merged
actions = [Event::MERGED] events.where(action: Event::MERGED)
when EventFilter.comments when EventFilter.comments
actions = [Event::COMMENTED] events.where(action: Event::COMMENTED)
when EventFilter.team when EventFilter.team
actions = [Event::JOINED, Event::LEFT, Event::EXPIRED] events.where(action: [Event::JOINED, Event::LEFT, Event::EXPIRED])
when EventFilter.all when EventFilter.issue
actions = [ events.where(action: [Event::CREATED, Event::UPDATED, Event::CLOSED, Event::REOPENED])
Event::PUSHED,
Event::MERGED,
Event::COMMENTED,
Event::JOINED,
Event::LEFT,
Event::EXPIRED
]
end end
events.where(action: actions)
end end
def options(key) def options(key)
...@@ -73,6 +65,10 @@ class EventFilter ...@@ -73,6 +65,10 @@ class EventFilter
end end
def active?(key) def active?(key)
if params.present?
params.include? key params.include? key
else
key == EventFilter.all
end
end end
end end
...@@ -11,6 +11,10 @@ ...@@ -11,6 +11,10 @@
%a.event-filter-link{ id: "merged_event_filter", title: "Filter by merge events", href: "/dashboard/activity"} %a.event-filter-link{ id: "merged_event_filter", title: "Filter by merge events", href: "/dashboard/activity"}
%span %span
Merge events Merge events
%li
%a.event-filter-link{ id: "issue_event_filter", title: "Filter by issue events", href: "/dashboard/activity"}
%span
Issue events
%li %li
%a.event-filter-link{ id: "comments_event_filter", title: "Filter by comments", href: "/dashboard/activity"} %a.event-filter-link{ id: "comments_event_filter", title: "Filter by comments", href: "/dashboard/activity"}
%span %span
......
...@@ -7,6 +7,10 @@ describe EventFilter, lib: true do ...@@ -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!(: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!(: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!(: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!(: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) } 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 ...@@ -21,6 +25,11 @@ describe EventFilter, lib: true do
expect(events).to contain_exactly(merged_event) expect(events).to contain_exactly(merged_event)
end 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 it 'applies comments filter' do
events = EventFilter.new(EventFilter.comments).apply_filter(Event.all) events = EventFilter.new(EventFilter.comments).apply_filter(Event.all)
expect(events).to contain_exactly(comments_event) expect(events).to contain_exactly(comments_event)
...@@ -33,17 +42,17 @@ describe EventFilter, lib: true do ...@@ -33,17 +42,17 @@ describe EventFilter, lib: true do
it 'applies all filter' do it 'applies all filter' do
events = EventFilter.new(EventFilter.all).apply_filter(Event.all) 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 end
it 'applies no filter' do it 'applies no filter' do
events = EventFilter.new(nil).apply_filter(Event.all) 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 end
it 'applies unknown filter' do it 'applies unknown filter' do
events = EventFilter.new('').apply_filter(Event.all) 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 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