From 469a361feb9c57dee96524d0f293c7bdc2f39593 Mon Sep 17 00:00:00 2001 From: im-vedant <194vedantgutpa@gmail.com> Date: Sun, 22 Dec 2024 01:32:53 +0530 Subject: [PATCH 01/28] feat: add script to check for code coverage disable statements --- .../workflows/code_coverage_disable_check.py | 122 ++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 .github/workflows/code_coverage_disable_check.py diff --git a/.github/workflows/code_coverage_disable_check.py b/.github/workflows/code_coverage_disable_check.py new file mode 100644 index 0000000000..0c3541d2d6 --- /dev/null +++ b/.github/workflows/code_coverage_disable_check.py @@ -0,0 +1,122 @@ +"""Code Coverage Disable Checker Script. + +Methodology: + + Recursively analyzes TypeScript files in the specified directories to ensure + they do not contain code coverage disable statements. + + This script enforces proper code coverage practices in the project. + +NOTE: + + This script complies with our python3 coding and documentation standards. + It complies with: + + 1) Pylint + 2) Pydocstyle + 3) Pycodestyle + 4) Flake8 + +""" + +import os +import re +import argparse +import sys + +def has_code_coverage_disable(file_path): + """ + Check if a TypeScript file contains code coverage disable statements. + + Args: + file_path (str): Path to the TypeScript file. + + Returns: + bool: True if code coverage disable statement is found, False otherwise. + """ + code_coverage_disable_pattern = re.compile(r'(?://\s*istanbul\s+ignore(?:-next-line|-line)?|/\*\s*istanbul\s+ignore\s*(?:next|-line)\s*\*/)', re.IGNORECASE) + + try: + with open(file_path, 'r', encoding='utf-8') as file: + content = file.read() + return bool(code_coverage_disable_pattern.search(content)) + except Exception as e: + print(f"Error reading file {file_path}: {e}") + return False + +def check_code_coverage(directories): + """ + Recursively check TypeScript files for code coverage disable statements. + + Args: + directories (list) : List of directories. + + Returns: + bool: True if code coverage disable statement is found, False otherwise. + """ + code_coverage_found = False + + for directory in directories: + if not os.path.exists(directory): + print(f"Error: The specified directory '{directory}' does not exist.") + sys.exit(1) + for root, dirs, files in os.walk(directory): + for file_name in files: + if file_name.endswith('.tsx') and not file_name.endswith('.test.tsx'): + file_path = os.path.join(root, file_name) + if has_code_coverage_disable(file_path): + print(f'File {file_path} contains code coverage disable statement.') + code_coverage_found = True + + setup_path = os.path.join(directory, 'setup.ts') + if os.path.exists(setup_path) and has_code_coverage_disable(setup_path): + print(f'Setup file {setup_path} contains code coverage disable statement.') + code_coverage_found = True + + return code_coverage_found + +def arg_parser_resolver(): + """Resolve the CLI arguments provided by the user. + + Returns: + result: Parsed argument object + """ + parser = argparse.ArgumentParser() + parser.add_argument( + "--directory", + type=str, + nargs='+', + default=[os.getcwd()], + help="One or more directories to check for code coverage disable statements (default: current directory)." + ) + return parser.parse_args() + +def main(): + """ + Execute the script's main functionality. + + This function serves as the entry point for the script. It performs + the following tasks: + 1. Validates and retrieves the directory to check from + command line arguments. + 2. Recursively checks TypeScript files for code coverage disable statements. + 3. Provides informative messages based on the analysis. + 4. Exits with an error if code coverage disable statements are found. + + Raises: + SystemExit: If an error occurs during execution. + """ + args = arg_parser_resolver() + print("Directories to check: ", args.directory) + + # Check code coverage in the specified directory + code_coverage_found = check_code_coverage(args.directory) + + if code_coverage_found: + print("Code coverage disable check failed. Exiting with error.") + sys.exit(1) + + print("Code coverage disable check completed successfully.") + +if __name__ == "__main__": + main() From cea12f105d36d56ab1e211d04ccd781e042436f9 Mon Sep 17 00:00:00 2001 From: im-vedant <194vedantgutpa@gmail.com> Date: Sun, 22 Dec 2024 01:39:52 +0530 Subject: [PATCH 02/28] Add code coverage disable check to GitHub workflows --- .github/workflows/pull-request.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index fb6505324e..9bbd31d31d 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -187,6 +187,22 @@ jobs: run: | python .github/workflows/eslint_disable_check.py + Check-Code-Coverage-Disable: + name: Check for code coverage disable + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: 3.9 + + - name: Run Python script + run: | + python .github/workflows/code_coverage_disable_check.py + Test-Application: name: Test Application runs-on: ubuntu-latest From 6e68380f35e64d374bc3eb9907890817501d2a5e Mon Sep 17 00:00:00 2001 From: im-vedant <194vedantgutpa@gmail.com> Date: Mon, 23 Dec 2024 01:37:45 +0530 Subject: [PATCH 03/28] Formatted code_coverage_disable_check.py to comply with all coding and documentation standards. --- .../workflows/code_coverage_disable_check.py | 75 +++++++++++++------ 1 file changed, 54 insertions(+), 21 deletions(-) diff --git a/.github/workflows/code_coverage_disable_check.py b/.github/workflows/code_coverage_disable_check.py index 0c3541d2d6..1cbbdfad44 100644 --- a/.github/workflows/code_coverage_disable_check.py +++ b/.github/workflows/code_coverage_disable_check.py @@ -2,13 +2,12 @@ Methodology: - Recursively analyzes TypeScript files in the specified directories to ensure - they do not contain code coverage disable statements. + Recursively analyzes TypeScript files in the specified directories to + ensure they do not contain code coverage disable statements. This script enforces proper code coverage practices in the project. NOTE: - This script complies with our python3 coding and documentation standards. It complies with: @@ -16,6 +15,7 @@ 2) Pydocstyle 3) Pycodestyle 4) Flake8 + 5) Python Black """ @@ -24,6 +24,7 @@ import argparse import sys + def has_code_coverage_disable(file_path): """ Check if a TypeScript file contains code coverage disable statements. @@ -32,18 +33,30 @@ def has_code_coverage_disable(file_path): file_path (str): Path to the TypeScript file. Returns: - bool: True if code coverage disable statement is found, False otherwise. + bool: True if code coverage disable statement is found, False + otherwise. """ - code_coverage_disable_pattern = re.compile(r'(?://\s*istanbul\s+ignore(?:-next-line|-line)?|/\*\s*istanbul\s+ignore\s*(?:next|-line)\s*\*/)', re.IGNORECASE) - + code_coverage_disable_pattern = re.compile( + r"""(?://\s*istanbul\s+ignore(?:-next-line|-line)? + |/\*\s*istanbul\s+ignore\s*(?:next|-line)\s*\*/)""", + re.IGNORECASE, + ) + try: - with open(file_path, 'r', encoding='utf-8') as file: + with open(file_path, "r", encoding="utf-8") as file: content = file.read() return bool(code_coverage_disable_pattern.search(content)) - except Exception as e: + except FileNotFoundError: + print(f"File not found: {file_path}") + return False + except PermissionError: + print(f"Permission denied: {file_path}") + return False + except (IOError, OSError) as e: print(f"Error reading file {file_path}: {e}") return False + def check_code_coverage(directories): """ Recursively check TypeScript files for code coverage disable statements. @@ -52,29 +65,46 @@ def check_code_coverage(directories): directories (list) : List of directories. Returns: - bool: True if code coverage disable statement is found, False otherwise. + bool: True if code coverage disable statement is found, False + otherwise. """ code_coverage_found = False for directory in directories: if not os.path.exists(directory): - print(f"Error: The specified directory '{directory}' does not exist.") + print( + f"""Error: The specified directory '{directory}' does + not exist.""" + ) sys.exit(1) - for root, dirs, files in os.walk(directory): + for root, _, files in os.walk(directory): for file_name in files: - if file_name.endswith('.tsx') and not file_name.endswith('.test.tsx'): + if ( + file_name.endswith(".tsx") + and not file_name.endswith(".test.tsx") + ): file_path = os.path.join(root, file_name) if has_code_coverage_disable(file_path): - print(f'File {file_path} contains code coverage disable statement.') + print( + f"""File {file_path} contains code coverage disable + statement.""" + ) code_coverage_found = True - setup_path = os.path.join(directory, 'setup.ts') - if os.path.exists(setup_path) and has_code_coverage_disable(setup_path): - print(f'Setup file {setup_path} contains code coverage disable statement.') + setup_path = os.path.join(directory, "setup.ts") + if ( + os.path.exists(setup_path) + and has_code_coverage_disable(setup_path) + ): + print( + f"""Setup file {setup_path} contains code coverage disable + statement.""" + ) code_coverage_found = True return code_coverage_found + def arg_parser_resolver(): """Resolve the CLI arguments provided by the user. @@ -85,12 +115,14 @@ def arg_parser_resolver(): parser.add_argument( "--directory", type=str, - nargs='+', + nargs="+", default=[os.getcwd()], - help="One or more directories to check for code coverage disable statements (default: current directory)." + help="""One or more directories to check for code coverage disable + statements (default: current directory).""", ) return parser.parse_args() + def main(): """ Execute the script's main functionality. @@ -99,7 +131,8 @@ def main(): the following tasks: 1. Validates and retrieves the directory to check from command line arguments. - 2. Recursively checks TypeScript files for code coverage disable statements. + 2. Recursively checks TypeScript files for code coverage disable + statements. 3. Provides informative messages based on the analysis. 4. Exits with an error if code coverage disable statements are found. @@ -107,8 +140,7 @@ def main(): SystemExit: If an error occurs during execution. """ args = arg_parser_resolver() - print("Directories to check: ", args.directory) - + # Check code coverage in the specified directory code_coverage_found = check_code_coverage(args.directory) @@ -118,5 +150,6 @@ def main(): print("Code coverage disable check completed successfully.") + if __name__ == "__main__": main() From 679fc49fd9d4251ff8450f28d83ef3d477790858 Mon Sep 17 00:00:00 2001 From: im-vedant <194vedantgutpa@gmail.com> Date: Mon, 23 Dec 2024 02:18:17 +0530 Subject: [PATCH 04/28] add functionality in eslint_disable_check.py to run for mutliple directories --- .github/workflows/eslint_disable_check.py | 87 +++++++++++++++-------- 1 file changed, 58 insertions(+), 29 deletions(-) diff --git a/.github/workflows/eslint_disable_check.py b/.github/workflows/eslint_disable_check.py index 201b4462b8..bc17fe3b51 100644 --- a/.github/workflows/eslint_disable_check.py +++ b/.github/workflows/eslint_disable_check.py @@ -4,13 +4,12 @@ Methodology: - Recursively analyzes TypeScript files in the 'src' directory and its subdirectories - as well as 'setup.ts' files to ensure they do not contain eslint-disable statements. + Recursively analyzes TypeScript files in the specified directory + to ensure they do not contain eslint-disable statements. This script enforces code quality practices in the project. NOTE: - This script complies with our python3 coding and documentation standards. It complies with: @@ -18,6 +17,7 @@ 2) Pydocstyle 3) Pycodestyle 4) Flake8 + 5) Python Black """ @@ -26,6 +26,7 @@ import argparse import sys + def has_eslint_disable(file_path): """ Check if a TypeScript file contains eslint-disable statements. @@ -36,43 +37,71 @@ def has_eslint_disable(file_path): Returns: bool: True if eslint-disable statement is found, False otherwise. """ - eslint_disable_pattern = re.compile(r'//\s*eslint-disable(?:-next-line|-line)?', re.IGNORECASE) - + eslint_disable_pattern = re.compile( + r"""\/\/\s*eslint-disable(?:-next-line + |-line)?[^\n]*|\/\*\s*eslint-disable[^\*]*\*\/""", + re.IGNORECASE, + ) + try: - with open(file_path, 'r', encoding='utf-8') as file: + with open(file_path, "r", encoding="utf-8") as file: content = file.read() return bool(eslint_disable_pattern.search(content)) - except Exception as e: + except FileNotFoundError: + print(f"File not found: {file_path}") + return False + except PermissionError: + print(f"Permission denied: {file_path}") + return False + except (IOError, OSError) as e: print(f"Error reading file {file_path}: {e}") return False -def check_eslint(directory): + +def check_eslint(directories): """ - Recursively check TypeScript files for eslint-disable statements in the 'src' directory. + Recursively check TypeScript files for eslint-disable statements. Args: - directory (str): Path to the directory. + directories (list): List of directories. Returns: bool: True if eslint-disable statement is found, False otherwise. """ eslint_found = False - for root, dirs, files in os.walk(os.path.join(directory, 'src')): - for file_name in files: - if file_name.endswith('.tsx') and not file_name.endswith('.test.tsx'): - file_path = os.path.join(root, file_name) - if has_eslint_disable(file_path): - print(f'File {file_path} contains eslint-disable statement.') - eslint_found = True - - setup_path = os.path.join(directory, 'setup.ts') - if os.path.exists(setup_path) and has_eslint_disable(setup_path): - print(f'Setup file {setup_path} contains eslint-disable statement.') - eslint_found = True + for directory in directories: + if not os.path.exists(directory): + print( + f"""Error: The specified directory '{directory}' does not + exist.""" + ) + sys.exit(1) + for root, _, files in os.walk(directory): + for file_name in files: + if ( + file_name.endswith(".tsx") + and not file_name.endswith(".test.tsx") + ): + file_path = os.path.join(root, file_name) + if has_eslint_disable(file_path): + print( + f"""File {file_path} contains eslint-disable + statement.""" + ) + eslint_found = True + + setup_path = os.path.join(directory, "setup.ts") + if os.path.exists(setup_path) and has_eslint_disable(setup_path): + print( + f"""Setup file {setup_path} contains eslint-disable + statement.""" + ) + eslint_found = True return eslint_found + def arg_parser_resolver(): """Resolve the CLI arguments provided by the user. @@ -83,11 +112,14 @@ def arg_parser_resolver(): parser.add_argument( "--directory", type=str, - default=os.getcwd(), - help="Path to the directory to check (default: current directory)" + nargs="+", + default=[os.getcwd()], + help="""One or more directories to check for eslint disable + statements (default: current directory).""", ) return parser.parse_args() + def main(): """ Execute the script's main functionality. @@ -104,11 +136,7 @@ def main(): SystemExit: If an error occurs during execution. """ args = arg_parser_resolver() - - if not os.path.exists(args.directory): - print(f"Error: The specified directory '{args.directory}' does not exist.") - sys.exit(1) - + print(f"Checking directories: {args.directory}") # Check eslint in the specified directory eslint_found = check_eslint(args.directory) @@ -118,5 +146,6 @@ def main(): print("ESLint-disable check completed successfully.") + if __name__ == "__main__": main() From 01c430abdeba6471902884aa30ef738d0bd13af2 Mon Sep 17 00:00:00 2001 From: im-vedant <194vedantgutpa@gmail.com> Date: Mon, 23 Dec 2024 02:21:31 +0530 Subject: [PATCH 05/28] removed unnecessary comment --- .github/workflows/eslint_disable_check.py | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/eslint_disable_check.py b/.github/workflows/eslint_disable_check.py index bc17fe3b51..135b3c19c2 100644 --- a/.github/workflows/eslint_disable_check.py +++ b/.github/workflows/eslint_disable_check.py @@ -136,7 +136,6 @@ def main(): SystemExit: If an error occurs during execution. """ args = arg_parser_resolver() - print(f"Checking directories: {args.directory}") # Check eslint in the specified directory eslint_found = check_eslint(args.directory) From b57503625856a2e5ab57fcdad9d8d8b690c91960 Mon Sep 17 00:00:00 2001 From: im-vedant <194vedantgutpa@gmail.com> Date: Mon, 23 Dec 2024 04:45:32 +0530 Subject: [PATCH 06/28] excluded node_modules from eslint disable check --- .github/workflows/eslint_disable_check.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/eslint_disable_check.py b/.github/workflows/eslint_disable_check.py index 135b3c19c2..78351d88d7 100644 --- a/.github/workflows/eslint_disable_check.py +++ b/.github/workflows/eslint_disable_check.py @@ -78,6 +78,8 @@ def check_eslint(directories): ) sys.exit(1) for root, _, files in os.walk(directory): + if "node_modules" in root: + continue for file_name in files: if ( file_name.endswith(".tsx") From 62d423246c5820807ce23c170f386b22875b70fc Mon Sep 17 00:00:00 2001 From: im-vedant <194vedantgutpa@gmail.com> Date: Wed, 25 Dec 2024 01:28:50 +0530 Subject: [PATCH 07/28] removed all eslint disable statements and code coverage disable statements --- .../AddOn/core/AddOnStore/AddOnStore.tsx | 14 +-- .../AddPeopleToTag/AddPeopleToTag.tsx | 11 +- src/components/CheckIn/TableRow.tsx | 8 +- src/components/EventCalendar/EventHeader.tsx | 2 +- .../EventCalendar/YearlyEventCalender.tsx | 2 +- .../EventListCard/EventListCardModals.tsx | 9 +- .../EventAttendance/EventAttendance.tsx | 18 +-- .../EventAttendance/EventStatistics.tsx | 45 +++---- .../AddOnSpotAttendee.tsx | 1 - .../EventRegistrantsModal.tsx | 14 +-- .../EventStats/Statistics/Feedback.tsx | 3 +- src/components/HolidayCards/HolidayCard.tsx | 1 - .../MemberDetail/EventsAttendedCardItem.tsx | 1 - .../MemberDetail/customTableCell.tsx | 4 +- .../MemberRequestCard/MemberRequestCard.tsx | 33 ++--- .../OrgAdminListCard/OrgAdminListCard.tsx | 1 - .../OrgPeopleListCard/OrgPeopleListCard.tsx | 3 +- src/components/OrgPostCard/OrgPostCard.tsx | 118 ++++++++---------- .../General/OrgUpdate/OrgUpdate.tsx | 4 +- .../OrganizationScreen/OrganizationScreen.tsx | 3 +- src/components/Pagination/Pagination.tsx | 5 +- .../ProfileDropdown/ProfileDropdown.tsx | 5 +- .../CustomRecurrenceModal.tsx | 1 - .../RequestsTableItem/RequestsTableItem.tsx | 6 +- src/components/TagActions/TagActions.tsx | 10 +- src/components/TagActions/TagNode.tsx | 6 +- .../UpdateSession/UpdateSession.tsx | 1 - src/components/UserListCard/UserListCard.tsx | 2 - .../UserPasswordUpdate/UserPasswordUpdate.tsx | 5 +- .../UserPortal/CommentCard/CommentCard.tsx | 6 +- .../CreateDirectChat/CreateDirectChat.tsx | 2 +- .../CreateGroupChat/CreateGroupChat.tsx | 4 +- .../UserPortal/EventCard/EventCard.tsx | 3 +- .../OrganizationCard/OrganizationCard.tsx | 1 - .../OrganizationNavbar/OrganizationNavbar.tsx | 8 +- .../OrganizationSidebar.tsx | 4 +- .../UserPortal/PostCard/PostCard.tsx | 10 +- .../UserPortal/Register/Register.tsx | 14 +-- .../StartPostModal/StartPostModal.tsx | 3 +- .../UserPortal/UserNavbar/UserNavbar.tsx | 3 +- src/components/Venues/VenueModal.tsx | 7 +- src/screens/BlockUser/BlockUser.tsx | 6 +- .../CommunityProfile/CommunityProfile.tsx | 2 - .../EventManagement/EventManagement.tsx | 13 +- .../VolunteerGroups/VolunteerGroupModal.tsx | 50 ++++---- .../Volunteers/VolunteerCreateModal.tsx | 9 +- src/screens/ForgotPassword/ForgotPassword.tsx | 3 +- .../FundCampaignPledge/FundCampaignPledge.tsx | 10 +- .../FundCampaignPledge/PledgeModal.tsx | 34 ++--- src/screens/ManageTag/ManageTag.spec.tsx | 2 - src/screens/ManageTag/ManageTag.tsx | 30 ++--- src/screens/MemberDetail/MemberDetail.tsx | 23 ++-- src/screens/OrgList/OrganizationModal.tsx | 2 +- src/screens/OrgPost/OrgPost.tsx | 3 +- src/screens/OrgSettings/OrgSettings.tsx | 5 +- .../OrganizationActionItems/ItemModal.tsx | 5 - .../OrganizationDashboard.tsx | 11 +- .../OrganizationEvents/OrganizationEvents.tsx | 9 +- .../CampaignModal.tsx | 17 ++- src/screens/OrganizationFunds/FundModal.tsx | 1 - .../OrganizationPeople/OrganizationPeople.tsx | 3 +- .../OrganizationTags/OrganizationTags.tsx | 8 +- .../OrganizationVenues/OrganizationVenues.tsx | 3 +- src/screens/Requests/Requests.tsx | 2 +- src/screens/SubTags/SubTags.tsx | 24 ++-- .../UserPortal/Campaigns/PledgeModal.tsx | 34 ++--- src/screens/UserPortal/Chat/Chat.tsx | 52 ++++++-- src/screens/UserPortal/Donate/Donate.tsx | 11 +- src/screens/UserPortal/Events/Events.tsx | 11 +- .../Organizations/Organizations.tsx | 16 +-- src/screens/UserPortal/People/People.tsx | 14 +-- src/screens/UserPortal/Settings/Settings.tsx | 31 ++--- .../UpcomingEvents/UpcomingEvents.tsx | 15 +-- .../Volunteer/VolunteerManagement.tsx | 5 +- src/screens/Users/Users.tsx | 9 +- src/utils/getOrganizationId.ts | 1 - 76 files changed, 344 insertions(+), 531 deletions(-) diff --git a/src/components/AddOn/core/AddOnStore/AddOnStore.tsx b/src/components/AddOn/core/AddOnStore/AddOnStore.tsx index 90a32d9bb3..f5e6e611bf 100644 --- a/src/components/AddOn/core/AddOnStore/AddOnStore.tsx +++ b/src/components/AddOn/core/AddOnStore/AddOnStore.tsx @@ -52,7 +52,6 @@ function addOnStore(): JSX.Element { /** * Fetches store plugins and updates the Redux store with the plugin data. */ - /* istanbul ignore next */ const getStorePlugins = async (): Promise => { let plugins = await new PluginHelper().fetchStore(); const installIds = (await new PluginHelper().fetchInstalled()).map( @@ -68,7 +67,6 @@ function addOnStore(): JSX.Element { /** * Sets the list of installed plugins in the component's state. */ - /* istanbul ignore next */ const getInstalledPlugins: () => void = () => { setDataList(data?.getPlugins ?? []); }; @@ -80,7 +78,6 @@ function addOnStore(): JSX.Element { */ const updateSelectedTab = (tab: string): void => { setIsStore(tab === 'available'); - /* istanbul ignore next */ if (tab === 'available') { getStorePlugins(); } else { @@ -111,7 +108,6 @@ function addOnStore(): JSX.Element { }; // Show a loader while the data is being fetched - /* istanbul ignore next */ if (loading) { return ( <> @@ -157,12 +153,10 @@ function addOnStore(): JSX.Element { {!isStore && ( - filterChange( - e as unknown as React.ChangeEvent, - ) + onSelect={(e) => + filterChange( + e as unknown as React.ChangeEvent, + ) } > = ({ }; }, ) => { - if (!fetchMoreResult) /* istanbul ignore next */ return prevResult; + if (!fetchMoreResult) return prevResult; return { getUsersToAssignTo: { @@ -127,7 +127,7 @@ const AddPeopleToTag: React.FC = ({ const userTagMembersToAssignTo = userTagsMembersToAssignToData?.getUsersToAssignTo.usersToAssignTo.edges.map( (edge) => edge.node, - ) ?? /* istanbul ignore next */ []; + ) ?? []; const handleAddOrRemoveMember = (member: InterfaceMemberData): void => { setAssignToMembers((prevMembers) => { @@ -173,7 +173,7 @@ const AddPeopleToTag: React.FC = ({ hideAddPeopleToTagModal(); setAssignToMembers([]); } - } catch (error: unknown) /* istanbul ignore next */ { + } catch (error: unknown) { const errorMessage = error instanceof Error ? error.message : tErrors('unknownError'); toast.error(errorMessage); @@ -345,8 +345,7 @@ const AddPeopleToTag: React.FC = ({ next={loadMoreMembersToAssignTo} hasMore={ userTagsMembersToAssignToData?.getUsersToAssignTo - .usersToAssignTo.pageInfo.hasNextPage ?? - /* istanbul ignore next */ false + .usersToAssignTo.pageInfo.hasNextPage ?? false } loader={} scrollableTarget="addPeopleToTagScrollableDiv" @@ -357,7 +356,7 @@ const AddPeopleToTag: React.FC = ({ hideFooter={true} getRowId={(row) => row.id} slots={{ - noRowsOverlay: /* istanbul ignore next */ () => ( + noRowsOverlay: () => ( setEventName(e.target.value)} />