Commit 29044d94 authored by Alex Kalderimis's avatar Alex Kalderimis

Support event filtering by wiki page status

Includes suggested changes from reviewer (@.luke)

Co-authored-by: @.luke
parent 467958d1
...@@ -9,6 +9,7 @@ class EventFilter ...@@ -9,6 +9,7 @@ class EventFilter
ISSUE = 'issue' ISSUE = 'issue'
COMMENTS = 'comments' COMMENTS = 'comments'
TEAM = 'team' TEAM = 'team'
WIKI = 'wiki'
def initialize(filter) def initialize(filter)
# Split using comma to maintain backward compatibility Ex/ "filter1,filter2" # Split using comma to maintain backward compatibility Ex/ "filter1,filter2"
...@@ -33,6 +34,8 @@ class EventFilter ...@@ -33,6 +34,8 @@ class EventFilter
events.where(action: [Event::JOINED, Event::LEFT, Event::EXPIRED]) events.where(action: [Event::JOINED, Event::LEFT, Event::EXPIRED])
when ISSUE when ISSUE
events.where(action: [Event::CREATED, Event::UPDATED, Event::CLOSED, Event::REOPENED], target_type: 'Issue') events.where(action: [Event::CREATED, Event::UPDATED, Event::CLOSED, Event::REOPENED], target_type: 'Issue')
when WIKI
events.for_wiki_page
else else
events events
end end
...@@ -42,7 +45,7 @@ class EventFilter ...@@ -42,7 +45,7 @@ class EventFilter
private private
def filters def filters
[ALL, PUSH, MERGED, ISSUE, COMMENTS, TEAM] [ALL, PUSH, MERGED, ISSUE, COMMENTS, TEAM, WIKI]
end end
end end
......
...@@ -28,6 +28,8 @@ describe EventFilter do ...@@ -28,6 +28,8 @@ describe EventFilter do
let_it_be(:comments_event) { create(:event, :commented, project: public_project, target: public_project) } let_it_be(:comments_event) { create(:event, :commented, project: public_project, target: public_project) }
let_it_be(:joined_event) { create(:event, :joined, project: public_project, target: public_project) } let_it_be(:joined_event) { create(:event, :joined, project: public_project, target: public_project) }
let_it_be(:left_event) { create(:event, :left, project: public_project, target: public_project) } let_it_be(:left_event) { create(:event, :left, project: public_project, target: public_project) }
let_it_be(:wiki_page_event) { create(:wiki_page_event) }
let_it_be(:wiki_page_update_event) { create(:wiki_page_event, :updated) }
let(:filtered_events) { described_class.new(filter).apply_filter(Event.all) } let(:filtered_events) { described_class.new(filter).apply_filter(Event.all) }
...@@ -79,6 +81,14 @@ describe EventFilter do ...@@ -79,6 +81,14 @@ describe EventFilter do
end end
end end
context 'with the "wiki" filter' do
let(:filter) { described_class::WIKI }
it 'returns only wiki page events' do
expect(filtered_events).to contain_exactly(wiki_page_event, wiki_page_update_event)
end
end
context 'with an unknown filter' do context 'with an unknown filter' do
let(:filter) { 'foo' } let(:filter) { 'foo' }
......
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