diff --git a/app/models/event.rb b/app/models/event.rb index 2cee786912c7557d056d047750ee99e6c42ef23e..333841b1f90d746e2dd33b8887eb4a2ef56edd61 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -84,6 +84,7 @@ class Event < ApplicationRecord scope :recent, -> { reorder(id: :desc) } scope :for_wiki_page, -> { where(target_type: 'WikiPage::Meta') } scope :for_design, -> { where(target_type: 'DesignManagement::Design') } + scope :for_issue, -> { where(target_type: ISSUE_TYPES) } scope :for_fingerprint, ->(fingerprint) do fingerprint.present? ? where(fingerprint: fingerprint) : none end diff --git a/lib/event_filter.rb b/lib/event_filter.rb index d26a1cfeebc0defcb48b11373fa34f393e5db208..ed14affda71a972186897df6ad34c3cc2653cc30 100644 --- a/lib/event_filter.rb +++ b/lib/event_filter.rb @@ -38,7 +38,7 @@ def apply_filter(events) when TEAM events.where(action: Event::TEAM_ACTIONS) when ISSUE - events.where(action: Event::ISSUE_ACTIONS, target_type: Event::ISSUE_TYPES) + events.where(action: Event::ISSUE_ACTIONS).for_issue when WIKI wiki_events(events) when DESIGNS @@ -97,7 +97,7 @@ def in_operator_query_builder_params(array_data) when ISSUE in_operator_params( array_data: array_data, - scope: Event.where(target_type: Event::ISSUE_TYPES), + scope: Event.for_issue, in_column: :action, in_values: Event.actions.values_at(*Event::ISSUE_ACTIONS) ) diff --git a/spec/models/event_spec.rb b/spec/models/event_spec.rb index 667f3ddff72280a779a2ec57e35d780407d2508f..f170eeb5841ad4099e945143bc40445ca4aa0727 100644 --- a/spec/models/event_spec.rb +++ b/spec/models/event_spec.rb @@ -102,7 +102,20 @@ end describe 'scopes' do - describe 'created_at' do + describe '.for_issue' do + let(:issue_event) { create(:event, :for_issue, project: project) } + let(:work_item_event) { create(:event, :for_work_item, project: project) } + + before do + create(:event, :for_design, project: project) + end + + it 'returns events for Issue and WorkItem target_type' do + expect(described_class.for_issue).to contain_exactly(issue_event, work_item_event) + end + end + + describe '.created_at' do it 'can find the right event' do time = 1.day.ago event = create(:event, created_at: time, project: project)