From 004e9ffc0a0a9224c572457f959b1680f4c85726 Mon Sep 17 00:00:00 2001
From: Ammar Alakkad <aalakkad@gitlab.com>
Date: Tue, 1 Oct 2024 07:32:55 +0000
Subject: [PATCH] Mass renaming of variables to contain _count suffix

The variables passed to frontend didn't include this suffix since the
members tab is kind of dynamic and would require more changes to
accommodate this renaming.
---
 app/helpers/groups/group_members_helper.rb    |  2 +-
 .../projects/project_members_helper.rb        |  2 +-
 .../groups/group_members/index.html.haml      |  2 +-
 .../projects/project_members/index.html.haml  |  2 +-
 .../members/promotion_requests/store/state.js |  4 +--
 .../ee/groups/group_members_controller.rb     |  7 +++--
 .../ee/projects/project_members_controller.rb |  7 +++--
 .../helpers/ee/groups/group_members_helper.rb |  4 +--
 ee/app/helpers/ee/members_helper.rb           | 14 ----------
 .../ee/projects/project_members_helper.rb     |  4 +--
 .../promotion_requests/store/state_spec.js    |  2 +-
 .../ee/groups/group_members_helper_spec.rb    |  8 +++---
 .../projects/project_members_helper_spec.rb   | 10 +++----
 .../groups/group_members_controller_spec.rb   | 25 +++++-------------
 .../project_members_controller_spec.rb        | 26 +++++--------------
 .../promotion_request_shared_examples.rb      | 19 ++++++--------
 .../groups/group_members_helper_spec.rb       |  4 +--
 .../projects/project_members_helper_spec.rb   |  4 +--
 18 files changed, 50 insertions(+), 96 deletions(-)

diff --git a/app/helpers/groups/group_members_helper.rb b/app/helpers/groups/group_members_helper.rb
index 0fb7dc3805a60..1bba9d789f5cf 100644
--- a/app/helpers/groups/group_members_helper.rb
+++ b/app/helpers/groups/group_members_helper.rb
@@ -14,7 +14,7 @@ def group_members_app_data(
     banned:,
     include_relations:,
     search:,
-    pending_members:,
+    pending_members_count:,
     placeholder_users:
   )
     {
diff --git a/app/helpers/projects/project_members_helper.rb b/app/helpers/projects/project_members_helper.rb
index 8909edab055a3..c70a18992dab3 100644
--- a/app/helpers/projects/project_members_helper.rb
+++ b/app/helpers/projects/project_members_helper.rb
@@ -19,7 +19,7 @@ def project_member_header_subtext(project)
   private
 
   def project_members_app_data(
-    project, members:, invited:, access_requests:, include_relations:, search:, pending_members:) # rubocop:disable Lint/UnusedMethodArgument -- Argument used in EE
+    project, members:, invited:, access_requests:, include_relations:, search:, pending_members_count:) # rubocop:disable Lint/UnusedMethodArgument -- Argument used in EE
     {
       user: project_members_list_data(project, members, { param_name: :page, params: { search_groups: nil } }),
       group: project_group_links_list_data(project, include_relations, search),
diff --git a/app/views/groups/group_members/index.html.haml b/app/views/groups/group_members/index.html.haml
index 87ba30b88353c..9ff3f0421e42f 100644
--- a/app/views/groups/group_members/index.html.haml
+++ b/app/views/groups/group_members/index.html.haml
@@ -32,7 +32,7 @@
                                                                              banned: @banned || [],
                                                                              include_relations: @include_relations,
                                                                              search: params[:search_groups],
-                                                                             pending_members: @pending_promotion_members,
+                                                                             pending_members_count: @pending_promotion_members_count,
                                                                              placeholder_users: @placeholder_users_count
                                                                             ).to_json } }
       = gl_loading_icon(css_class: 'gl-my-5', size: 'md')
diff --git a/app/views/projects/project_members/index.html.haml b/app/views/projects/project_members/index.html.haml
index 8a4e9de95e139..f0c38b19cfe4f 100644
--- a/app/views/projects/project_members/index.html.haml
+++ b/app/views/projects/project_members/index.html.haml
@@ -46,5 +46,5 @@
                                                                                       access_requests: @requesters,
                                                                                       include_relations: @include_relations,
                                                                                       search: params[:search_groups],
-                                                                                      pending_members: @pending_promotion_members) } }
+                                                                                      pending_members_count: @pending_promotion_members_count) } }
       = gl_loading_icon(css_class: 'gl-my-5', size: 'md')
diff --git a/ee/app/assets/javascripts/members/promotion_requests/store/state.js b/ee/app/assets/javascripts/members/promotion_requests/store/state.js
index 65703f9d8213b..a0b4b91a75569 100644
--- a/ee/app/assets/javascripts/members/promotion_requests/store/state.js
+++ b/ee/app/assets/javascripts/members/promotion_requests/store/state.js
@@ -1,5 +1,5 @@
-export default ({ pagination }) => ({
+export default ({ totalItems }) => ({
   pagination: {
-    totalItems: pagination?.totalItems ?? 0,
+    totalItems: totalItems ?? 0,
   },
 });
diff --git a/ee/app/controllers/ee/groups/group_members_controller.rb b/ee/app/controllers/ee/groups/group_members_controller.rb
index 14862ad3ff061..6b46743fc3714 100644
--- a/ee/app/controllers/ee/groups/group_members_controller.rb
+++ b/ee/app/controllers/ee/groups/group_members_controller.rb
@@ -40,7 +40,7 @@ def index
         # rubocop:disable Gitlab/ModuleWithInstanceVariables
         @banned = presented_banned_members
         @memberships_with_custom_role = present_group_members(group_memberships_with_custom_role)
-        @pending_promotion_members = pending_promotion_members
+        @pending_promotion_members_count = pending_promotion_members_count
         # rubocop:enable Gitlab/ModuleWithInstanceVariables
       end
 
@@ -168,14 +168,13 @@ def banned_members(params: {})
           .banned_from(group)
       end
 
-      def pending_promotion_members
+      def pending_promotion_members_count
         return unless can?(current_user, :admin_group_member, group)
 
         GitlabSubscriptions::MemberManagement::MemberApprovalFinder
           .new(current_user: current_user, params: params, source: group)
           .execute
-          .page(params[:promotion_requests_page])
-          .per(MEMBER_PER_PAGE_LIMIT)
+          .count
       end
     end
   end
diff --git a/ee/app/controllers/ee/projects/project_members_controller.rb b/ee/app/controllers/ee/projects/project_members_controller.rb
index 99db8a2c6f0ea..081a863e48705 100644
--- a/ee/app/controllers/ee/projects/project_members_controller.rb
+++ b/ee/app/controllers/ee/projects/project_members_controller.rb
@@ -13,7 +13,7 @@ def index
         super
 
         # rubocop:disable Gitlab/ModuleWithInstanceVariables -- Need to initialize pending members
-        @pending_promotion_members = pending_promotion_members
+        @pending_promotion_members_count = pending_promotion_members_count
         # rubocop:enable Gitlab/ModuleWithInstanceVariables
       end
 
@@ -37,14 +37,13 @@ def non_invited_members
         super.non_awaiting
       end
 
-      def pending_promotion_members
+      def pending_promotion_members_count
         return unless can?(current_user, :admin_project_member, project)
 
         GitlabSubscriptions::MemberManagement::MemberApprovalFinder
           .new(current_user: current_user, params: params, source: project)
           .execute
-          .page(params[:promotion_requests_page])
-          .per(MEMBER_PER_PAGE_LIMIT)
+          .count
       end
     end
   end
diff --git a/ee/app/helpers/ee/groups/group_members_helper.rb b/ee/app/helpers/ee/groups/group_members_helper.rb
index 9c01b40507a05..48f1f61005bf5 100644
--- a/ee/app/helpers/ee/groups/group_members_helper.rb
+++ b/ee/app/helpers/ee/groups/group_members_helper.rb
@@ -21,7 +21,7 @@ def group_members_app_data(
     banned:,
     include_relations:,
     search:,
-    pending_members:,
+    pending_members_count:,
     placeholder_users:
   )
     super.merge!({
@@ -30,7 +30,7 @@ def group_members_app_data(
       can_filter_by_enterprise: group.domain_verification_available? && can?(current_user, :admin_group_member, group),
       banned: group_members_list_data(group, banned),
       manage_member_roles_path: manage_member_roles_path(group),
-      promotion_request: pending_members.present? ? promotion_pending_members_list_data(pending_members) : [],
+      promotion_request: { total_items: pending_members_count },
       can_approve_access_requests: !::Namespaces::FreeUserCap::Enforcement.new(group.root_ancestor).reached_limit?,
       namespace_user_limit: ::Namespaces::FreeUserCap.dashboard_limit
     })
diff --git a/ee/app/helpers/ee/members_helper.rb b/ee/app/helpers/ee/members_helper.rb
index 06dae14db6b2b..dc5da0df5dcb7 100644
--- a/ee/app/helpers/ee/members_helper.rb
+++ b/ee/app/helpers/ee/members_helper.rb
@@ -9,20 +9,6 @@ def members_page?
 
     private
 
-    def promotion_pending_members_list_data(pending_promotion_members)
-      pagination = { param_name: :promotion_requests_page, params: { page: nil } }
-      {
-        data: promotion_pending_members_serialized(pending_promotion_members),
-        pagination: members_pagination_data(pending_promotion_members, pagination)
-      }
-    end
-
-    def promotion_pending_members_serialized(pending_promotion_members)
-      GitlabSubscriptions::MemberManagement::MemberApprovalSerializer.new.represent(
-        pending_promotion_members, { current_user: current_user }
-      )
-    end
-
     def member_header_manage_namespace_members_text(namespace)
       manage_text = _(
         'To manage seats for all members associated with this group and its subgroups and projects, ' \
diff --git a/ee/app/helpers/ee/projects/project_members_helper.rb b/ee/app/helpers/ee/projects/project_members_helper.rb
index bb0613754ff6f..d3e49de066ddb 100644
--- a/ee/app/helpers/ee/projects/project_members_helper.rb
+++ b/ee/app/helpers/ee/projects/project_members_helper.rb
@@ -7,11 +7,11 @@ module ProjectMembersHelper
 
       override :project_members_app_data
       def project_members_app_data(
-        project, members:, invited:, access_requests:, include_relations:, search:, pending_members:
+        project, members:, invited:, access_requests:, include_relations:, search:, pending_members_count:
       )
         super.merge(
           manage_member_roles_path: manage_member_roles_path(project),
-          promotion_request: pending_members.present? ? promotion_pending_members_list_data(pending_members) : [],
+          promotion_request: { total_items: pending_members_count },
           can_approve_access_requests: can_approve_access_requests(project),
           namespace_user_limit: ::Namespaces::FreeUserCap.dashboard_limit
         )
diff --git a/ee/spec/frontend/members/promotion_requests/store/state_spec.js b/ee/spec/frontend/members/promotion_requests/store/state_spec.js
index df90e3bd0b449..20ab4522541ec 100644
--- a/ee/spec/frontend/members/promotion_requests/store/state_spec.js
+++ b/ee/spec/frontend/members/promotion_requests/store/state_spec.js
@@ -3,7 +3,7 @@ import { pagination } from '../mock_data';
 
 describe('Promotion requests store state', () => {
   it('inits the state', () => {
-    const state = createState({ pagination });
+    const state = createState(pagination);
     expect(state).toEqual({ pagination });
   });
 });
diff --git a/ee/spec/helpers/ee/groups/group_members_helper_spec.rb b/ee/spec/helpers/ee/groups/group_members_helper_spec.rb
index 8ed16a90fec94..07440b09022e7 100644
--- a/ee/spec/helpers/ee/groups/group_members_helper_spec.rb
+++ b/ee/spec/helpers/ee/groups/group_members_helper_spec.rb
@@ -22,7 +22,7 @@
       banned: banned,
       include_relations: [:inherited, :direct],
       search: nil,
-      pending_members: [],
+      pending_members_count: [],
       placeholder_users: {}
     )
   end
@@ -139,7 +139,7 @@
       end
     end
 
-    context 'with promotion_request' do
+    context 'with promotion_request_count' do
       let(:type) { :for_group_member }
       let(:member_namespace) { group }
 
@@ -152,12 +152,12 @@
           banned: banned,
           include_relations: [:inherited, :direct],
           search: nil,
-          pending_members: pending_members,
+          pending_members_count: pending_members_count,
           placeholder_users: {}
         )
       end
 
-      it_behaves_like 'adding promotion_request in app data'
+      it_behaves_like 'adding promotion_request_count in app data'
     end
 
     describe 'available roles' do
diff --git a/ee/spec/helpers/projects/project_members_helper_spec.rb b/ee/spec/helpers/projects/project_members_helper_spec.rb
index 7feda6434f180..0beef38b2b5ec 100644
--- a/ee/spec/helpers/projects/project_members_helper_spec.rb
+++ b/ee/spec/helpers/projects/project_members_helper_spec.rb
@@ -52,7 +52,7 @@ def call_project_members_app_data_json
         access_requests: [],
         include_relations: [:inherited, :direct],
         search: nil,
-        pending_members: []
+        pending_members_count: []
       )
     end
 
@@ -81,17 +81,17 @@ def initialize(user)
         access_requests: [],
         include_relations: [:inherited, :direct],
         search: nil,
-        pending_members: pending_members
+        pending_members_count: pending_members_count
       )
     end
 
-    let(:pending_members) { nil }
+    let(:pending_members_count) { nil }
 
-    context 'with promotion_request' do
+    context 'with promotion_request_count' do
       let(:type) { :for_project_member }
       let(:member_namespace) { project.project_namespace }
 
-      it_behaves_like 'adding promotion_request in app data'
+      it_behaves_like 'adding promotion_request_count in app data'
     end
 
     context 'with `can_approve_access_requests`' do
diff --git a/ee/spec/requests/groups/group_members_controller_spec.rb b/ee/spec/requests/groups/group_members_controller_spec.rb
index 0302742e12e8f..509a27a0a4176 100644
--- a/ee/spec/requests/groups/group_members_controller_spec.rb
+++ b/ee/spec/requests/groups/group_members_controller_spec.rb
@@ -102,23 +102,10 @@
 
       context 'with member_promotion management feature enabled' do
         context 'when user can admin group' do
-          it 'assigns @pending_promotion_members with the correct pending members' do
+          it 'assigns @pending_promotion_members_count with the correct pending members' do
             get_group_members
 
-            expect(assigns(:pending_promotion_members)).to match_array(pending_member_approvals)
-          end
-
-          context 'with pagination' do
-            let(:params) { { promotion_requests_page: 2 } }
-
-            it 'paginates @pending_promotion_members correctly' do
-              stub_const("EE::#{described_class}::MEMBER_PER_PAGE_LIMIT", 1)
-
-              get_group_members
-
-              expect(assigns(:pending_promotion_members).size).to eq(1)
-              expect(assigns(:pending_promotion_members)).to contain_exactly(pending_member_approvals.second)
-            end
+            expect(assigns(:pending_promotion_members_count)).to eq(2)
           end
         end
 
@@ -127,19 +114,19 @@
             group.add_developer(user)
           end
 
-          it 'does not assigns @pending_promotion_members' do
+          it 'does not assigns @pending_promotion_members_count' do
             get_group_members
 
-            expect(assigns(:pending_promotion_members)).to eq(nil)
+            expect(assigns(:pending_promotion_members_count)).to eq(nil)
           end
         end
       end
 
       shared_examples "empty response" do
-        it 'assigns @pending_promotion_members be empty' do
+        it 'assigns @pending_promotion_members_count to be 0' do
           get_group_members
 
-          expect(assigns(:pending_promotion_members)).to be_empty
+          expect(assigns(:pending_promotion_members_count)).to eq(0)
         end
       end
 
diff --git a/ee/spec/requests/projects/project_members_controller_spec.rb b/ee/spec/requests/projects/project_members_controller_spec.rb
index c2eb40cb099e1..3bf97fa5fe402 100644
--- a/ee/spec/requests/projects/project_members_controller_spec.rb
+++ b/ee/spec/requests/projects/project_members_controller_spec.rb
@@ -37,45 +37,31 @@
 
       context 'with member_promotion management feature enabled' do
         context 'when user can admin project' do
-          it 'assigns @pending_promotion_members' do
+          it 'assigns @pending_promotion_members_count' do
             make_request
 
-            expect(assigns(:pending_promotion_members)).to match_array(pending_member_approvals)
-          end
-
-          context 'with pagination' do
-            let(:param) { { promotion_requests_page: 2 } }
-
-            it 'paginates @pending_promotion_members correctly' do
-              group.add_owner(user)
-              stub_const("EE::#{described_class}::MEMBER_PER_PAGE_LIMIT", 1)
-
-              make_request
-
-              expect(assigns(:pending_promotion_members).size).to eq(1)
-              expect(assigns(:pending_promotion_members)).to contain_exactly(pending_member_approvals.second)
-            end
+            expect(assigns(:pending_promotion_members_count)).to eq(2)
           end
         end
 
         context 'when user cannot admin project' do
-          it 'does not assigns @pending_promotion_members' do
+          it 'does not assigns @pending_promotion_members_count' do
             user = create(:user)
             sign_in(user)
             project.add_developer(user)
 
             make_request
 
-            expect(assigns(:pending_promotion_members)).to eq(nil)
+            expect(assigns(:pending_promotion_members_count)).to eq(nil)
           end
         end
       end
 
       shared_examples "empty response" do
-        it 'assigns @pending_promotion_members be empty' do
+        it 'assigns @pending_promotion_members_count be be 0' do
           make_request
 
-          expect(assigns(:pending_promotion_members)).to be_empty
+          expect(assigns(:pending_promotion_members_count)).to eq(0)
         end
       end
 
diff --git a/ee/spec/support/shared_examples/helpers/promotion_request_shared_examples.rb b/ee/spec/support/shared_examples/helpers/promotion_request_shared_examples.rb
index a74bf412b3873..e957de84cdbcc 100644
--- a/ee/spec/support/shared_examples/helpers/promotion_request_shared_examples.rb
+++ b/ee/spec/support/shared_examples/helpers/promotion_request_shared_examples.rb
@@ -1,24 +1,21 @@
 # frozen_string_literal: true
 
-RSpec.shared_examples 'adding promotion_request in app data' do
-  context 'when pending_members is nil' do
-    let!(:pending_members) { nil }
+RSpec.shared_examples 'adding promotion_request_count in app data' do
+  context 'when pending_members_count is nil' do
+    let!(:pending_members_count) { nil }
 
-    it 'returns `promotion_request` property with []' do
-      expect(helper_app_data[:promotion_request]).to eq []
+    it 'returns `promotion_request_count` property with []' do
+      expect(helper_app_data[:promotion_request]).to include({ total_items: nil })
     end
   end
 
   context 'when pending_members is not nil' do
-    let!(:pending_members) do
+    let!(:pending_members_count) do
       create_list(:member_approval, 2, type, member_namespace: member_namespace)
     end
 
-    it 'returns valid `promotion_request`' do
-      expect(helper_app_data[:promotion_request].keys).to match_array([:data, :pagination])
-      expect(helper_app_data[:promotion_request][:data].size).to eq(2)
-      expect(helper_app_data[:promotion_request][:data].first.keys).to match_array [:id, :created_at,
-        :updated_at, :requested_by, :reviewed_by, :new_access_level, :old_access_level, :source, :user]
+    it 'returns valid `promotion_request_count`' do
+      expect(helper_app_data[:promotion_request].keys).to match_array([:total_items])
     end
   end
 end
diff --git a/spec/helpers/groups/group_members_helper_spec.rb b/spec/helpers/groups/group_members_helper_spec.rb
index ed60630560e6c..b2e8381d8c4d2 100644
--- a/spec/helpers/groups/group_members_helper_spec.rb
+++ b/spec/helpers/groups/group_members_helper_spec.rb
@@ -36,7 +36,7 @@
         banned: [],
         include_relations: [:inherited, :direct],
         search: nil,
-        pending_members: [],
+        pending_members_count: [],
         placeholder_users: {
           pagination: {
             total_items: 3,
@@ -121,7 +121,7 @@
             banned: [],
             include_relations: include_relations,
             search: nil,
-            pending_members: [],
+            pending_members_count: [],
             placeholder_users: {}
           )
         end
diff --git a/spec/helpers/projects/project_members_helper_spec.rb b/spec/helpers/projects/project_members_helper_spec.rb
index f874e5d338a1a..191795a9d4ccb 100644
--- a/spec/helpers/projects/project_members_helper_spec.rb
+++ b/spec/helpers/projects/project_members_helper_spec.rb
@@ -32,7 +32,7 @@
             access_requests: present_members(access_requests),
             include_relations: [:inherited, :direct],
             search: nil,
-            pending_members: []
+            pending_members_count: []
           )
         )
       end
@@ -142,7 +142,7 @@
                 access_requests: present_members(access_requests),
                 include_relations: include_relations,
                 search: nil,
-                pending_members: []
+                pending_members_count: []
               )
             )
           end
-- 
GitLab