From d1e8b5efc2b81c23940699e493baed6f547f69b9 Mon Sep 17 00:00:00 2001
From: Nataliia Radina <nradina@gitlab.com>
Date: Tue, 9 Apr 2024 13:32:59 +0000
Subject: [PATCH] Add new FF for branch rules Changelog: changed

---
 .../settings/branch_rules/components/view/index.vue      | 8 ++++----
 .../projects/settings/repository/branch_rules/app.vue    | 4 ++--
 .../projects/settings/branch_rules_controller.rb         | 1 +
 .../projects/settings/repository_controller.rb           | 2 +-
 app/controllers/projects_controller.rb                   | 2 +-
 config/feature_flags/beta/edit_branch_rules.yml          | 9 +++++++++
 qa/qa/page/project/settings/branch_rules.rb              | 2 +-
 .../3_create/repository/add_new_branch_rule_spec.rb      | 2 +-
 .../settings/branch_rules/components/view/index_spec.js  | 6 +++---
 .../settings/repository/branch_rules/app_spec.js         | 6 +++---
 10 files changed, 26 insertions(+), 16 deletions(-)
 create mode 100644 config/feature_flags/beta/edit_branch_rules.yml

diff --git a/app/assets/javascripts/projects/settings/branch_rules/components/view/index.vue b/app/assets/javascripts/projects/settings/branch_rules/components/view/index.vue
index 9a7bc3251512d..7b919952db8a6 100644
--- a/app/assets/javascripts/projects/settings/branch_rules/components/view/index.vue
+++ b/app/assets/javascripts/projects/settings/branch_rules/components/view/index.vue
@@ -239,7 +239,7 @@ export default {
     <div class="gl-display-flex gl-justify-content-space-between gl-align-items-center">
       <h3 class="gl-mb-5">{{ $options.i18n.pageTitle }}</h3>
       <gl-button
-        v-if="glFeatures.addBranchRule && branchRule"
+        v-if="glFeatures.editBranchRules && branchRule"
         v-gl-modal="$options.deleteModalId"
         data-testid="delete-rule-button"
         category="secondary"
@@ -255,7 +255,7 @@ export default {
           <div class="gl-display-flex gl-justify-content-space-between">
             <strong>{{ $options.i18n.targetRule }}</strong>
             <gl-button
-              v-if="glFeatures.addBranchRule"
+              v-if="glFeatures.addBranchRule || glFeatures.editBranchRules"
               v-gl-modal="$options.editModalId"
               data-testid="edit-rule-button"
               size="small"
@@ -377,7 +377,7 @@ export default {
     </template>
     <!-- EE end -->
     <gl-modal
-      v-if="glFeatures.addBranchRule"
+      v-if="glFeatures.editBranchRules"
       :ref="$options.deleteModalId"
       :modal-id="$options.deleteModalId"
       :title="$options.i18n.deleteRuleModalTitle"
@@ -389,7 +389,7 @@ export default {
     </gl-modal>
 
     <branch-rule-modal
-      v-if="glFeatures.addBranchRule"
+      v-if="glFeatures.editBranchRules"
       :id="$options.editModalId"
       :ref="$options.editModalId"
       :title="$options.i18n.updateTargetRule"
diff --git a/app/assets/javascripts/projects/settings/repository/branch_rules/app.vue b/app/assets/javascripts/projects/settings/repository/branch_rules/app.vue
index e5bc8c4146b50..39ef18fc65d2f 100644
--- a/app/assets/javascripts/projects/settings/repository/branch_rules/app.vue
+++ b/app/assets/javascripts/projects/settings/repository/branch_rules/app.vue
@@ -147,7 +147,7 @@ export default {
         </div>
       </div>
       <gl-disclosure-dropdown
-        v-if="glFeatures.addBranchRule"
+        v-if="glFeatures.editBranchRules"
         :toggle-text="$options.i18n.addBranchRule"
         :items="addRuleItems"
         size="small"
@@ -181,7 +181,7 @@ export default {
       </div>
     </ul>
     <branch-rule-modal
-      v-if="glFeatures.addBranchRule"
+      v-if="glFeatures.editBranchRules"
       :id="$options.modalId"
       :ref="$options.modalId"
       :title="$options.i18n.createBranchRule"
diff --git a/app/controllers/projects/settings/branch_rules_controller.rb b/app/controllers/projects/settings/branch_rules_controller.rb
index e03ca6526df9b..8ad9ad9d4cd81 100644
--- a/app/controllers/projects/settings/branch_rules_controller.rb
+++ b/app/controllers/projects/settings/branch_rules_controller.rb
@@ -7,6 +7,7 @@ class BranchRulesController < Projects::ApplicationController
       before_action do
         push_frontend_feature_flag(:add_branch_rule, @project)
         push_frontend_feature_flag(:approval_rules_drawer, @project)
+        push_frontend_feature_flag(:edit_branch_rules, @project)
       end
 
       feature_category :source_code_management
diff --git a/app/controllers/projects/settings/repository_controller.rb b/app/controllers/projects/settings/repository_controller.rb
index 6a10d603ad7be..2d7a3d698f03a 100644
--- a/app/controllers/projects/settings/repository_controller.rb
+++ b/app/controllers/projects/settings/repository_controller.rb
@@ -8,7 +8,7 @@ class RepositoryController < Projects::ApplicationController
       before_action :define_variables, only: [:create_deploy_token]
 
       before_action do
-        push_frontend_feature_flag(:add_branch_rule, @project)
+        push_frontend_feature_flag(:edit_branch_rules, @project)
       end
 
       feature_category :source_code_management, [:show, :cleanup, :update]
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index f0084b6ce6c08..1d02dad5abe6c 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -41,7 +41,7 @@ class ProjectsController < Projects::ApplicationController
     push_frontend_feature_flag(:remove_monitor_metrics, @project)
     push_frontend_feature_flag(:explain_code_chat, current_user)
     push_frontend_feature_flag(:issue_email_participants, @project)
-    push_frontend_feature_flag(:add_branch_rule, @project)
+    push_frontend_feature_flag(:edit_branch_rules, @project)
     # TODO: We need to remove the FF eventually when we rollout page_specific_styles
     push_frontend_feature_flag(:page_specific_styles, current_user)
     push_licensed_feature(:file_locks) if @project.present? && @project.licensed_feature_available?(:file_locks)
diff --git a/config/feature_flags/beta/edit_branch_rules.yml b/config/feature_flags/beta/edit_branch_rules.yml
new file mode 100644
index 0000000000000..a6b1f155f9c1b
--- /dev/null
+++ b/config/feature_flags/beta/edit_branch_rules.yml
@@ -0,0 +1,9 @@
+---
+name: edit_branch_rules
+feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/435948
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/140319
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/454501
+milestone: '16.11'
+group: group::source code
+type: beta
+default_enabled: false
diff --git a/qa/qa/page/project/settings/branch_rules.rb b/qa/qa/page/project/settings/branch_rules.rb
index 401d75fd1ceda..a0ef5ad879790 100644
--- a/qa/qa/page/project/settings/branch_rules.rb
+++ b/qa/qa/page/project/settings/branch_rules.rb
@@ -14,7 +14,7 @@ class BranchRules < Page::Base
             element 'details-button'
           end
 
-          def click_add_branch_rule
+          def click_edit_branch_rules
             click_element('add-branch-rule-button')
             click_button('Create protected branch')
           end
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/add_new_branch_rule_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/add_new_branch_rule_spec.rb
index 9a102fe02123f..e78447b636be6 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/add_new_branch_rule_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/add_new_branch_rule_spec.rb
@@ -26,7 +26,7 @@ module QA
 
         Page::Project::Settings::Repository.perform(&:expand_branch_rules)
 
-        Page::Project::Settings::BranchRules.perform(&:click_add_branch_rule)
+        Page::Project::Settings::BranchRules.perform(&:click_edit_branch_rules)
 
         Page::Project::Settings::ProtectedBranches.perform do |settings|
           settings.select_branch(branch_name)
diff --git a/spec/frontend/projects/settings/branch_rules/components/view/index_spec.js b/spec/frontend/projects/settings/branch_rules/components/view/index_spec.js
index 2d469627e2889..46326ab6c8f14 100644
--- a/spec/frontend/projects/settings/branch_rules/components/view/index_spec.js
+++ b/spec/frontend/projects/settings/branch_rules/components/view/index_spec.js
@@ -76,7 +76,7 @@ describe('View branch rules', () => {
   const errorHandler = jest.fn().mockRejectedValue('error');
 
   const createComponent = async (
-    glFeatures = { addBranchRule: true },
+    glFeatures = { editBranchRules: true },
     mockResponse,
     deleteMutationHandler = deleteBranchRuleSuccessHandler,
     editMutationHandler = editBranchRuleSuccessHandler,
@@ -207,7 +207,7 @@ describe('View branch rules', () => {
     });
 
     it('if error happens it shows an alert', async () => {
-      await createComponent({ addBranchRule: true }, branchProtectionsMockResponse, errorHandler);
+      await createComponent({ editBranchRules: true }, branchProtectionsMockResponse, errorHandler);
       findDeleteRuleModal().vm.$emit('ok');
       await nextTick();
       await waitForPromises();
@@ -313,7 +313,7 @@ describe('View branch rules', () => {
   });
 
   describe('When add branch rules is FF disabled', () => {
-    beforeEach(() => createComponent({ addBranchRule: false }));
+    beforeEach(() => createComponent({ editBranchRule: false }));
     it('does not render delete rule button and modal when ff is disabled', () => {
       expect(findDeleteRuleButton().exists()).toBe(false);
       expect(findDeleteRuleModal().exists()).toBe(false);
diff --git a/spec/frontend/projects/settings/repository/branch_rules/app_spec.js b/spec/frontend/projects/settings/repository/branch_rules/app_spec.js
index 89bc348b48ddf..16f4ee1e3d621 100644
--- a/spec/frontend/projects/settings/repository/branch_rules/app_spec.js
+++ b/spec/frontend/projects/settings/repository/branch_rules/app_spec.js
@@ -46,7 +46,7 @@ describe('Branch rules app', () => {
     .mockResolvedValue(protectableBranchesMockResponse);
 
   const createComponent = async ({
-    glFeatures = { addBranchRule: true },
+    glFeatures = { editBranchRules: true },
     queryHandler = branchRulesQuerySuccessHandler,
     mutationHandler = addRuleMutationSuccessHandler,
   } = {}) => {
@@ -157,9 +157,9 @@ describe('Branch rules app', () => {
     });
   });
 
-  describe('Add branch rule when addBranchRule FF disabled', () => {
+  describe('Add branch rule when editBranchRule FF disabled', () => {
     beforeEach(() => {
-      createComponent({ glFeatures: { addBranchRule: false } });
+      createComponent({ glFeatures: { editBranchRule: false } });
     });
     it('renders an Add branch rule button', () => {
       expect(findAddBranchRuleButton().exists()).toBe(true);
-- 
GitLab