summaryrefslogtreecommitdiff
path: root/spec/lib/event_filter_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/lib/event_filter_spec.rb')
-rw-r--r--spec/lib/event_filter_spec.rb72
1 files changed, 56 insertions, 16 deletions
diff --git a/spec/lib/event_filter_spec.rb b/spec/lib/event_filter_spec.rb
index bab48796b8c..16612a6288c 100644
--- a/spec/lib/event_filter_spec.rb
+++ b/spec/lib/event_filter_spec.rb
@@ -3,6 +3,29 @@
require 'spec_helper'
RSpec.describe EventFilter do
+ let_it_be(:public_project) { create(:project, :public) }
+ let_it_be(:push_event) { create(:push_event, project: public_project) }
+ let_it_be(:merged_event) { create(:event, :merged, project: public_project, target: public_project) }
+ let_it_be(:created_event) { create(:event, :created, project: public_project, target: create(:issue, project: public_project)) }
+ let_it_be(:updated_event) { create(:event, :updated, project: public_project, target: create(:issue, project: public_project)) }
+ let_it_be(:closed_event) { create(:event, :closed, project: public_project, target: create(:issue, project: public_project)) }
+ let_it_be(:reopened_event) { create(:event, :reopened, project: public_project, target: create(:issue, project: 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(: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_it_be(:design_event) { create(:design_event) }
+
+ let_it_be(:work_item_event) do
+ create(:event,
+ :created,
+ project: public_project,
+ target: create(:work_item, :task, project: public_project),
+ target_type: 'WorkItem'
+ )
+ end
+
describe '#filter' do
it 'returns "all" if given filter is nil' do
expect(described_class.new(nil).filter).to eq(described_class::ALL)
@@ -18,20 +41,6 @@ RSpec.describe EventFilter do
end
describe '#apply_filter' do
- let_it_be(:public_project) { create(:project, :public) }
- let_it_be(:push_event) { create(:push_event, project: public_project) }
- let_it_be(:merged_event) { create(:event, :merged, project: public_project, target: public_project) }
- let_it_be(:created_event) { create(:event, :created, project: public_project, target: create(:issue, project: public_project)) }
- let_it_be(:updated_event) { create(:event, :updated, project: public_project, target: create(:issue, project: public_project)) }
- let_it_be(:closed_event) { create(:event, :closed, project: public_project, target: create(:issue, project: public_project)) }
- let_it_be(:reopened_event) { create(:event, :reopened, project: public_project, target: create(:issue, project: 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(: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_it_be(:design_event) { create(:design_event) }
-
let(:filtered_events) { described_class.new(filter).apply_filter(Event.all) }
context 'with the "push" filter' do
@@ -53,8 +62,14 @@ RSpec.describe EventFilter do
context 'with the "issue" filter' do
let(:filter) { described_class::ISSUE }
- it 'filters issue events only' do
- expect(filtered_events).to contain_exactly(created_event, updated_event, closed_event, reopened_event)
+ it 'filters issue and work item events only' do
+ expect(filtered_events).to contain_exactly(
+ created_event,
+ updated_event,
+ closed_event,
+ reopened_event,
+ work_item_event
+ )
end
end
@@ -115,6 +130,31 @@ RSpec.describe EventFilter do
end
end
+ describe '#in_operator_query_builder_params' do
+ let(:filtered_events) { described_class.new(filter).in_operator_query_builder_params(array_data) }
+ let(:array_data) do
+ {
+ scope_ids: [public_project.id],
+ scope_model: Project,
+ mapping_column: 'project_id'
+ }
+ end
+
+ context 'with the "issue" filter' do
+ let(:filter) { described_class::ISSUE }
+
+ it 'also includes work item events' do
+ expect(filtered_events[:scope]).to contain_exactly(
+ created_event,
+ updated_event,
+ closed_event,
+ reopened_event,
+ work_item_event
+ )
+ end
+ end
+ end
+
describe '#active?' do
let(:event_filter) { described_class.new(described_class::TEAM) }