diff --git a/app/controllers/groups/work_items_controller.rb b/app/controllers/groups/work_items_controller.rb new file mode 100644 index 0000000000000000000000000000000000000000..d1e15c81471edac4e4b9c43a3c15ec1bf8985a66 --- /dev/null +++ b/app/controllers/groups/work_items_controller.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +module Groups + class WorkItemsController < Groups::ApplicationController + feature_category :team_planning + + def index + not_found unless Feature.enabled?(:namespace_level_work_items, group) + end + end +end diff --git a/app/views/groups/work_items/index.html.haml b/app/views/groups/work_items/index.html.haml new file mode 100644 index 0000000000000000000000000000000000000000..9aa90b913a21590a47e8a56cb70d952307ea9dce --- /dev/null +++ b/app/views/groups/work_items/index.html.haml @@ -0,0 +1 @@ +- page_title s_('WorkItem|Work items') diff --git a/config/feature_flags/development/namespace_level_work_items.yml b/config/feature_flags/development/namespace_level_work_items.yml new file mode 100644 index 0000000000000000000000000000000000000000..794e56cf425eafdfe653bf0828b31d7dbe92f298 --- /dev/null +++ b/config/feature_flags/development/namespace_level_work_items.yml @@ -0,0 +1,8 @@ +--- +name: namespace_level_work_items +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/127124 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/419186 +milestone: '16.3' +type: development +group: group::project management +default_enabled: false diff --git a/config/routes/group.rb b/config/routes/group.rb index 9b346867f78ce3715f861bea45d886f55f8c1d2c..16371fca89e3fd1762455d6c6006bf76aa1168f9 100644 --- a/config/routes/group.rb +++ b/config/routes/group.rb @@ -160,6 +160,8 @@ end resources :achievements, only: [:index, :new, :edit] + + resources :work_items, only: [:index] end scope( diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 7960d24b762e392f307f3976ba324fb97b5eb230..23df88425ca016911012a16c9952d896f0b53e2b 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -52541,6 +52541,9 @@ msgstr "" msgid "WorkItem|Work item not found" msgstr "" +msgid "WorkItem|Work items" +msgstr "" + msgid "WorkItem|You're only seeing %{boldStart}other activity%{boldEnd} in the feed. To add a comment, switch to one of the following options." msgstr "" diff --git a/spec/requests/groups/work_items_controller_spec.rb b/spec/requests/groups/work_items_controller_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..c47b3f03ec1184e10b742b8cb370470f89136e5f --- /dev/null +++ b/spec/requests/groups/work_items_controller_spec.rb @@ -0,0 +1,49 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'Group Level Work Items', feature_category: :team_planning do + let_it_be(:group) { create(:group, :private) } + let_it_be(:project) { create(:project, group: group) } + let_it_be(:developer) { create(:user).tap { |u| group.add_developer(u) } } + + describe 'GET /groups/:group/-/work_items' do + let(:work_items_path) { url_for(controller: 'groups/work_items', action: :index, group_id: group.full_path) } + + before do + sign_in(current_user) + end + + context 'when the user can read the group' do + let(:current_user) { developer } + + it 'renders index' do + get work_items_path + + expect(response).to have_gitlab_http_status(:ok) + end + + context 'when the namespace_level_work_items feature flag is disabled' do + before do + stub_feature_flags(namespace_level_work_items: false) + end + + it 'returns not found' do + get work_items_path + + expect(response).to have_gitlab_http_status(:not_found) + end + end + end + + context 'when the user cannot read the group' do + let(:current_user) { create(:user) } + + it 'returns not found' do + get work_items_path + + expect(response).to have_gitlab_http_status(:not_found) + end + end + end +end