diff --git a/ee/app/controllers/groups/epics_controller.rb b/ee/app/controllers/groups/epics_controller.rb index dd0d36caeba517002d541d53663f8a83bdd8fc44..206d5dbcbbd4e962b2a349f09ec87c8c15d3423b 100644 --- a/ee/app/controllers/groups/epics_controller.rb +++ b/ee/app/controllers/groups/epics_controller.rb @@ -41,6 +41,8 @@ class Groups::EpicsController < Groups::ApplicationController push_frontend_ability(ability: :measure_comment_temperature, resource: epic, user: current_user) end + before_action :redirect_index_to_work_items, only: :index + feature_category :portfolio_management urgency :default, [:show, :new, :realtime_changes] urgency :low, [:discussions] @@ -83,6 +85,17 @@ def create private + def redirect_index_to_work_items + return unless index_html_request? && ::Feature.enabled?(:work_item_planning_view, @group) + + params = request.query_parameters.except("type").merge("type[]" => "epic") + redirect_to group_work_items_path(@group, params: params) + end + + def index_html_request? + action_name.to_sym == :index && html_request? + end + def epic_work_items_enabled? !!@group&.namespace_work_items_enabled? end diff --git a/ee/spec/controllers/groups/epics_controller_spec.rb b/ee/spec/controllers/groups/epics_controller_spec.rb index d4d7bb6514b45e848e8ad7812049a3d513d273d7..0c758234e5aab3536a6e6810c7a484b120692919 100644 --- a/ee/spec/controllers/groups/epics_controller_spec.rb +++ b/ee/spec/controllers/groups/epics_controller_spec.rb @@ -56,15 +56,34 @@ describe "GET #index" do let!(:epic_list) { create_list(:epic, 2, group: group) } - before do - sign_in(user) - group.add_developer(user) + context 'when work_item_planning_view is disabled' do + before do + stub_feature_flags(work_item_planning_view: false) + + sign_in(user) + group.add_developer(user) + end + + it "returns index" do + get :index, params: { group_id: group } + + expect(response).to have_gitlab_http_status(:ok) + end end - it "returns index" do - get :index, params: { group_id: group } + context 'when work_item_planning_view is enabled' do + before do + stub_feature_flags(work_item_planning_view: true) - expect(response).to have_gitlab_http_status(:ok) + sign_in(user) + group.add_developer(user) + end + + it "returns index" do + get :index, params: { group_id: group } + + expect(response).to redirect_to(group_work_items_path(group, 'type[]' => 'epic')) + end end end diff --git a/ee/spec/requests/groups/epics_controller_spec.rb b/ee/spec/requests/groups/epics_controller_spec.rb index 2e4b0415cb1cabc2d282b4d59e950ca3e4094bc0..ff6c024aee8fa81979d75d4d58e1f273fed5c0b9 100644 --- a/ee/spec/requests/groups/epics_controller_spec.rb +++ b/ee/spec/requests/groups/epics_controller_spec.rb @@ -10,6 +10,11 @@ let_it_be(:user) { create(:user, developer_of: group) } before do + # TODO: When removing the feature flag, + # we won't need the tests for the epics listing page, since we'll be using + # the work items listing page. + stub_feature_flags(work_item_planning_view: false) + stub_licensed_features(epics: true) sign_in(user) end