Commit 642452f0 authored by Adam Hegyi's avatar Adam Hegyi

Show only open items with "in progress" VSA

This change alters the filter in Value Stream Analytics. When the in
progress filter is given, the backend will only query the Issue and
Merge Request records which are in opened state.
parent 6f8c1e3b
...@@ -359,7 +359,7 @@ RSpec.describe Gitlab::Analytics::CycleAnalytics::DataCollector do ...@@ -359,7 +359,7 @@ RSpec.describe Gitlab::Analytics::CycleAnalytics::DataCollector do
let(:end_event_identifier) { :merge_request_merged } let(:end_event_identifier) { :merge_request_merged }
def create_data_for_start_event(example_class) def create_data_for_start_event(example_class)
create(:merge_request, :closed, source_project: example_class.project) create(:merge_request, :unique_branches, :opened, source_project: example_class.project)
end end
def create_data_for_end_event(mr, example_class) def create_data_for_end_event(mr, example_class)
...@@ -374,7 +374,7 @@ RSpec.describe Gitlab::Analytics::CycleAnalytics::DataCollector do ...@@ -374,7 +374,7 @@ RSpec.describe Gitlab::Analytics::CycleAnalytics::DataCollector do
let(:end_event_identifier) { :merge_request_first_deployed_to_production } let(:end_event_identifier) { :merge_request_first_deployed_to_production }
def create_data_for_start_event(example_class) def create_data_for_start_event(example_class)
create(:merge_request, :closed, source_project: example_class.project).tap do |mr| create(:merge_request, :unique_branches, :opened, source_project: example_class.project).tap do |mr|
mr.metrics.update!(merged_at: Time.now) mr.metrics.update!(merged_at: Time.now)
end end
end end
...@@ -391,7 +391,7 @@ RSpec.describe Gitlab::Analytics::CycleAnalytics::DataCollector do ...@@ -391,7 +391,7 @@ RSpec.describe Gitlab::Analytics::CycleAnalytics::DataCollector do
let(:end_event_identifier) { :merge_request_merged } let(:end_event_identifier) { :merge_request_merged }
def create_data_for_start_event(example_class) def create_data_for_start_event(example_class)
create(:merge_request, :merged, source_project: example_class.project).tap do |mr| create(:merge_request, :unique_branches, :opened, source_project: example_class.project).tap do |mr|
mr.metrics.update!(first_commit_at: Time.now) mr.metrics.update!(first_commit_at: Time.now)
end end
end end
...@@ -408,7 +408,7 @@ RSpec.describe Gitlab::Analytics::CycleAnalytics::DataCollector do ...@@ -408,7 +408,7 @@ RSpec.describe Gitlab::Analytics::CycleAnalytics::DataCollector do
let(:end_event_identifier) { :merge_request_last_build_finished } let(:end_event_identifier) { :merge_request_last_build_finished }
def create_data_for_start_event(example_class) def create_data_for_start_event(example_class)
create(:merge_request, :closed, source_project: example_class.project).tap do |mr| create(:merge_request, :unique_branches, :opened, source_project: example_class.project).tap do |mr|
mr.metrics.update!(latest_build_started_at: Time.now) mr.metrics.update!(latest_build_started_at: Time.now)
end end
end end
......
...@@ -19,6 +19,7 @@ module Gitlab ...@@ -19,6 +19,7 @@ module Gitlab
def initialize(stage:, params: {}) def initialize(stage:, params: {})
@stage = stage @stage = stage
@params = build_finder_params(params) @params = build_finder_params(params)
@params[:state] = :opened if in_progress?
end end
# rubocop: disable CodeReuse/ActiveRecord # rubocop: disable CodeReuse/ActiveRecord
......
...@@ -62,4 +62,29 @@ RSpec.describe Gitlab::Analytics::CycleAnalytics::BaseQueryBuilder do ...@@ -62,4 +62,29 @@ RSpec.describe Gitlab::Analytics::CycleAnalytics::BaseQueryBuilder do
expect(records.size).to eq(2) expect(records.size).to eq(2)
end end
describe 'in progress filter' do
let_it_be(:mr3) { create(:merge_request, :opened, target_project: project, source_project: project, allow_broken: true, created_at: 3.months.ago) }
let_it_be(:mr4) { create(:merge_request, :closed, target_project: project, source_project: project, allow_broken: true, created_at: 1.month.ago) }
before do
params[:from] = 5.months.ago
end
context 'when the filter is present' do
before do
params[:end_event_filter] = :in_progress
end
it 'returns only open items' do
expect(records).to eq([mr3])
end
end
context 'when the filter is absent' do
it 'returns finished items' do
expect(records).to match_array([mr1, mr2])
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