Commit 3112b106 authored by Pavel Shutsin's avatar Pavel Shutsin

Add deep links for selected value stream

Group value stream page has an option to select between
multiple value stream available. So we should be able to
get a link to a particular value stream directly.
parent f576abbd
......@@ -10,6 +10,7 @@ class Groups::Analytics::CycleAnalyticsController < Groups::Analytics::Applicati
before_action :load_group, only: :show
before_action :load_project, only: :show
before_action :load_value_stream, only: :show
before_action :request_params, only: :show
before_action do
......@@ -28,6 +29,12 @@ class Groups::Analytics::CycleAnalyticsController < Groups::Analytics::Applicati
override :all_cycle_analytics_params
def all_cycle_analytics_params
super.merge({ group: @group })
super.merge({ group: @group, value_stream: @value_stream })
end
def load_value_stream
return unless @group && params[:value_stream_id]
@value_stream = @group.value_streams.find(params[:value_stream_id])
end
end
......@@ -34,6 +34,7 @@ module Gitlab
attribute :created_before, :datetime
attribute :group
attribute :current_user
attribute :value_stream
FINDER_PARAM_NAMES.each do |param_name|
attribute param_name
......@@ -68,6 +69,7 @@ module Gitlab
def to_data_attributes
{}.tap do |attrs|
attrs[:group] = group_data_attributes if group
attrs[:value_stream] = value_stream_data_attributes if value_stream
attrs[:created_after] = created_after.to_date.iso8601
attrs[:created_before] = created_before.to_date.iso8601
attrs[:projects] = group_projects(project_ids) if group && project_ids.present?
......@@ -90,6 +92,12 @@ module Gitlab
}
end
def value_stream_data_attributes
{
id: value_stream.id
}
end
def group_projects(project_ids)
GroupProjectsFinder.new(
group: group,
......
......@@ -62,4 +62,16 @@ RSpec.describe Groups::Analytics::CycleAnalyticsController do
expect(response).to have_gitlab_http_status(:not_found)
end
end
context 'with group and value stream params' do
let(:value_stream) { create(:cycle_analytics_group_value_stream, group: group) }
it 'builds request params with group and value stream' do
expect_next_instance_of(Gitlab::Analytics::CycleAnalytics::RequestParams) do |instance|
expect(instance).to have_attributes(group: group, value_stream: value_stream)
end
get(:show, params: { group_id: group, value_stream_id: value_stream })
end
end
end
......@@ -168,6 +168,26 @@ RSpec.describe Gitlab::Analytics::CycleAnalytics::RequestParams do
end
end
describe 'optional `value_stream`' do
context 'when `value_stream` is not empty' do
let(:value_stream) { instance_double('Analytics::CycleAnalytics::GroupValueStream') }
before do
params[:value_stream] = value_stream
end
it { expect(subject.value_stream).to eq(value_stream) }
end
context 'when `value_stream` is nil' do
before do
params[:value_stream] = nil
end
it { expect(subject.value_stream).to eq(nil) }
end
end
describe 'issuable filter params' do
before do
params.merge!(
......
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