diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md index e5170124555cd60db28965bf392b11c66b5e2c16..315480d48939c0d783fdf68d425d229426c33bc2 100644 --- a/doc/api/graphql/reference/index.md +++ b/doc/api/graphql/reference/index.md @@ -25792,11 +25792,7 @@ four standard [pagination arguments](#pagination-arguments): ##### `Group.savedReplies` -Saved replies available to the group. Available only when feature flag `group_saved_replies_flag` is enabled. This field can only be resolved for one group in any single request. - -DETAILS: -**Introduced** in GitLab 16.10. -**Status**: Experiment. +Saved replies available to the group. This field can only be resolved for one group in any single request. Returns [`GroupSavedReplyConnection`](#groupsavedreplyconnection). @@ -25812,11 +25808,7 @@ four standard [pagination arguments](#pagination-arguments): ##### `Group.savedReply` -Saved reply in the group. Available only when feature flag `group_saved_replies_flag` is enabled. This field can only be resolved for one group in any single request. - -DETAILS: -**Introduced** in GitLab 16.10. -**Status**: Experiment. +Saved reply in the group. This field can only be resolved for one group in any single request. Returns [`GroupSavedReply`](#groupsavedreply). diff --git a/doc/user/profile/comment_templates.md b/doc/user/profile/comment_templates.md index 97ecd30735d5e6e5473bc038479741912fbbfb77..0ad5ee18083de2ab6af804bc86315a87e961dfbc 100644 --- a/doc/user/profile/comment_templates.md +++ b/doc/user/profile/comment_templates.md @@ -16,7 +16,7 @@ DETAILS: > - [Feature flag `saved_replies` removed](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/123363) in GitLab 16.6. > - Group-level saved replies [introduced](https://gitlab.com/groups/gitlab-org/-/epics/12669) in GitLab 16.11 [with a flag](../../administration/feature_flags.md) named `group_saved_replies_flag`. Disabled by default. > - Group-level saved replies [enabled](https://gitlab.com/gitlab-org/gitlab/-/issues/440817) on GitLab.com and self-managed in GitLab 16.11. -> - Group-level saved replies [generally available](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/148958) in GitLab 17.0. Feature flag `group_saved_replies_flag` removed. +> - Group-level saved replies [generally available](https://gitlab.com/gitlab-org/gitlab/-/issues/504028) in GitLab 17.7. Feature flag `group_saved_replies_flag` removed. > - Project-level saved replies [introduced](https://gitlab.com/groups/gitlab-org/-/epics/12669) in GitLab 17.0 [with a flag](../../administration/feature_flags.md) named `project_saved_replies_flag`. Enabled by default. FLAG: diff --git a/ee/app/graphql/ee/types/group_type.rb b/ee/app/graphql/ee/types/group_type.rb index ecbc5bcd8e8079871aca2304c67a883e72250230..f90363053befc53c7fa300ad501f7cde5a00c898 100644 --- a/ee/app/graphql/ee/types/group_type.rb +++ b/ee/app/graphql/ee/types/group_type.rb @@ -276,17 +276,13 @@ module GroupType ::Types::Groups::SavedReplyType.connection_type, null: true, resolver: ::Resolvers::Groups::SavedRepliesResolver, - description: 'Saved replies available to the group. Available only when feature flag ' \ - '`group_saved_replies_flag` is enabled. This field can only be resolved ' \ - 'for one group in any single request.', - experiment: { milestone: '16.10' } + description: 'Saved replies available to the group. This field can only be resolved ' \ + 'for one group in any single request.' field :saved_reply, resolver: ::Resolvers::Groups::SavedReplyResolver, - description: 'Saved reply in the group. Available only when feature flag ' \ - '`group_saved_replies_flag` is enabled. This field can only ' \ - 'be resolved for one group in any single request.', - experiment: { milestone: '16.10' } + description: 'Saved reply in the group. This field can only ' \ + 'be resolved for one group in any single request.' field :value_stream_analytics, ::Types::Analytics::ValueStreamAnalyticsType, diff --git a/ee/app/models/ee/group.rb b/ee/app/models/ee/group.rb index cb2590e3495da73cd77e0c83c5f86975b1a89d15..ce0692fb6a75230ffd3b976d8318d61d3e0aa2d2 100644 --- a/ee/app/models/ee/group.rb +++ b/ee/app/models/ee/group.rb @@ -298,7 +298,7 @@ def epic_and_work_item_associations_unification_enabled? override :supports_saved_replies? def supports_saved_replies? - ::Feature.enabled?(:group_saved_replies_flag, self, type: :beta) && licensed_feature_available?(:group_saved_replies) + licensed_feature_available?(:group_saved_replies) end def licensed_ai_features_available? diff --git a/ee/config/feature_flags/beta/group_saved_replies_flag.yml b/ee/config/feature_flags/beta/group_saved_replies_flag.yml deleted file mode 100644 index d9f48cec31186622c1cbfbcdd61b958439504929..0000000000000000000000000000000000000000 --- a/ee/config/feature_flags/beta/group_saved_replies_flag.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -name: group_saved_replies_flag -feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/330098 -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/143660 -rollout_issue_url: -milestone: '16.9' -group: group::code review -type: beta -default_enabled: true diff --git a/ee/spec/policies/group_policy_spec.rb b/ee/spec/policies/group_policy_spec.rb index 357fb500d0bc7663f3d60942ae5de315af2e42b6..b42cdc217cef800cbcc2c1c18c8991b476a4ea5c 100644 --- a/ee/spec/policies/group_policy_spec.rb +++ b/ee/spec/policies/group_policy_spec.rb @@ -4067,14 +4067,6 @@ def create_member_role(member, abilities = member_role_abilities) context 'saved replies permissions' do let(:current_user) { owner } - context 'when group_saved_replies_flag feature flag is disabled' do - before do - stub_feature_flags(group_saved_replies_flag: false) - end - - it { is_expected.to be_disallowed(:read_saved_replies, :create_saved_replies, :update_saved_replies, :destroy_saved_replies) } - end - context 'when no license is present' do before do stub_licensed_features(group_saved_replies: false) diff --git a/ee/spec/requests/api/graphql/groups/saved_replies/create_spec.rb b/ee/spec/requests/api/graphql/groups/saved_replies/create_spec.rb index 550ffd50a0ea8134fd605b02b5f6542fd68f7feb..fc019fd15edd5930e16e3ab13cc1347cd0495468 100644 --- a/ee/spec/requests/api/graphql/groups/saved_replies/create_spec.rb +++ b/ee/spec/requests/api/graphql/groups/saved_replies/create_spec.rb @@ -13,19 +13,6 @@ let(:mutation) { graphql_mutation(:group_saved_reply_create, input) } let(:mutation_response) { graphql_mutation_response(:group_saved_reply_create) } - context 'with group_saved_replies_flag disabled' do - before do - stub_feature_flags(group_saved_replies_flag: false) - stub_licensed_features(group_saved_replies: true) - end - - it 'returns null' do - post_graphql_mutation(mutation, current_user: current_user) - - expect(mutation_response).to be_nil - end - end - context 'when license is invalid' do before do stub_licensed_features(group_saved_replies: false) diff --git a/ee/spec/requests/api/graphql/groups/saved_replies/destroy_spec.rb b/ee/spec/requests/api/graphql/groups/saved_replies/destroy_spec.rb index e659f1caf7410959c591b4bf99459f5833f3b6df..9613791cfb7d9fe6c8c69c06bbb1abc8b3e6b72c 100644 --- a/ee/spec/requests/api/graphql/groups/saved_replies/destroy_spec.rb +++ b/ee/spec/requests/api/graphql/groups/saved_replies/destroy_spec.rb @@ -14,19 +14,6 @@ let(:mutation) { graphql_mutation(:group_saved_reply_destroy, input) } let(:mutation_response) { graphql_mutation_response(:group_saved_reply_destroy) } - context 'with group_saved_replies_flag disabled' do - before do - stub_feature_flags(group_saved_replies_flag: false) - stub_licensed_features(group_saved_replies: true) - end - - it 'returns null' do - post_graphql_mutation(mutation, current_user: current_user) - - expect(mutation_response).to be_nil - end - end - context 'when license is invalid' do before do stub_licensed_features(group_saved_replies: false) diff --git a/ee/spec/requests/api/graphql/groups/saved_replies/update_spec.rb b/ee/spec/requests/api/graphql/groups/saved_replies/update_spec.rb index 13cc58a22e5286be00d956ff4c04cdbdcd7e0928..9962161c8a2c165cee2d04183b3765a8f3d48165 100644 --- a/ee/spec/requests/api/graphql/groups/saved_replies/update_spec.rb +++ b/ee/spec/requests/api/graphql/groups/saved_replies/update_spec.rb @@ -14,19 +14,6 @@ let(:mutation) { graphql_mutation(:group_saved_reply_update, input) } let(:mutation_response) { graphql_mutation_response(:group_saved_reply_update) } - context 'with group_saved_replies_flag disabled' do - before do - stub_feature_flags(group_saved_replies_flag: false) - stub_licensed_features(group_saved_replies: true) - end - - it 'returns null' do - post_graphql_mutation(mutation, current_user: current_user) - - expect(mutation_response).to be_nil - end - end - context 'when license is invalid' do before do stub_licensed_features(group_saved_replies: false) diff --git a/ee/spec/requests/api/graphql/groups/saved_replies_spec.rb b/ee/spec/requests/api/graphql/groups/saved_replies_spec.rb index 31dbd115d9e08f002048a418123a20823976e008..8163c9336b028b5e35d7e74a9dc8bc9de456f624 100644 --- a/ee/spec/requests/api/graphql/groups/saved_replies_spec.rb +++ b/ee/spec/requests/api/graphql/groups/saved_replies_spec.rb @@ -51,19 +51,6 @@ end end - context 'when group_saved_replies_flag feature flag is disabled' do - before do - stub_feature_flags(group_saved_replies_flag: false) - stub_licensed_features(group_saved_replies: true) - end - - it 'returns nil' do - post_query - - expect(saved_reply_graphl_response).to be_nil - end - end - context 'when license is valid' do before do stub_licensed_features(group_saved_replies: true) diff --git a/ee/spec/requests/api/graphql/groups/saved_reply_spec.rb b/ee/spec/requests/api/graphql/groups/saved_reply_spec.rb index 03a10c666c3fad4c65878bb533dda6ddbf44ca12..027d548606f9ffb4c9ddb2bb019a406766d90c2c 100644 --- a/ee/spec/requests/api/graphql/groups/saved_reply_spec.rb +++ b/ee/spec/requests/api/graphql/groups/saved_reply_spec.rb @@ -48,19 +48,6 @@ end end - context 'when group_saved_replies_flag feature flag is disabled' do - before do - stub_feature_flags(group_saved_replies_flag: false) - stub_licensed_features(group_saved_replies: true) - end - - it 'returns null' do - post_query - - expect(saved_reply_graphl_response).to be_nil - end - end - context 'when license is valid' do before do stub_licensed_features(group_saved_replies: true) diff --git a/ee/spec/requests/groups/comment_templates_controller_spec.rb b/ee/spec/requests/groups/comment_templates_controller_spec.rb index 46682b6021048ebcb02c220eddfdca4d22a066a5..7f27dd84f10efb060e3857803c48d5b24f8b783e 100644 --- a/ee/spec/requests/groups/comment_templates_controller_spec.rb +++ b/ee/spec/requests/groups/comment_templates_controller_spec.rb @@ -18,17 +18,6 @@ it { expect(response).to have_gitlab_http_status(:not_found) } end - context 'when group_saved_replies_flag feature flag is disabled' do - before do - stub_feature_flags(group_saved_replies_flag: false) - stub_licensed_features(group_saved_replies: true) - - get group_comment_templates_path(group) - end - - it { expect(response).to have_gitlab_http_status(:not_found) } - end - context 'when license is valid' do before do stub_licensed_features(group_saved_replies: true) @@ -61,17 +50,6 @@ it { expect(response).to have_gitlab_http_status(:not_found) } end - context 'when group_saved_replies_flag feature flag is disabled' do - before do - stub_feature_flags(group_saved_replies_flag: false) - stub_licensed_features(group_saved_replies: true) - - get group_comment_templates_path(group) - end - - it { expect(response).to have_gitlab_http_status(:not_found) } - end - context 'when license is valid' do before do stub_licensed_features(group_saved_replies: true) @@ -104,17 +82,6 @@ it { expect(response).to have_gitlab_http_status(:not_found) } end - context 'when group_saved_replies_flag feature flag is disabled' do - before do - stub_feature_flags(group_saved_replies_flag: false) - stub_licensed_features(group_saved_replies: true) - - get group_comment_templates_path(group) - end - - it { expect(response).to have_gitlab_http_status(:not_found) } - end - context 'when license is valid' do before do stub_licensed_features(group_saved_replies: true) diff --git a/ee/spec/services/saved_replies/create_service_spec.rb b/ee/spec/services/saved_replies/create_service_spec.rb index ba7e72cc0a7c3b9581ecdec34ca0ebdf123e2cc1..fd8b1ec0fbca0a4dc14364f0243358ecb4581c7c 100644 --- a/ee/spec/services/saved_replies/create_service_spec.rb +++ b/ee/spec/services/saved_replies/create_service_spec.rb @@ -12,17 +12,6 @@ subject(:service) { described_class.new(object: group, name: name, content: content).execute } - context 'when feature flag is disabled' do - before do - stub_feature_flags(group_saved_replies_flag: false) - end - - it 'returns an error' do - expect(service[:status]).to eq(:error) - expect(service[:message]).to eq(_('You have insufficient permissions to create a saved reply')) - end - end - context 'when not licensed' do before do stub_licensed_features(group_saved_replies: false)