Skip to content

Enhance Coverage for EventRegistrantsModal#4865

Merged
palisadoes merged 15 commits intoPalisadoesFoundation:developfrom
rawadhossain:test/TestCoverage-EventRegistrantsModal
Nov 28, 2025
Merged

Enhance Coverage for EventRegistrantsModal#4865
palisadoes merged 15 commits intoPalisadoesFoundation:developfrom
rawadhossain:test/TestCoverage-EventRegistrantsModal

Conversation

@rawadhossain
Copy link
Copy Markdown

@rawadhossain rawadhossain commented Nov 27, 2025

What kind of change does this PR introduce?
Improved coverage for src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.tsx

Issue Number:
Fixes #4849

Snapshots/Videos:
image

Screenshot 2025-11-27 164551

If relevant, did you update the documentation?

Summary
Brief summary of newly added coverage:

  • Full coverage of isRecurring logic and EVENT_DETAILS branching
  • Complete coverage of addVariables
  • Invite modal open/close behavior and onInvitesSent callback fully exercised
  • Complete Autocomplete behavior coverage
  • getOptionLabel fallback (“Unknown User”) branch covered

Note:
The pre-commit hook was failing because check_pom.js used the old glob default export and sync API, which were removed in glob v13. I updated the script to use the correct globSync import so it works properly with the current library version.

Does this PR introduce a breaking change?

Checklist

CodeRabbit AI Review

  • I have reviewed and addressed all critical issues flagged by CodeRabbit AI
  • I have implemented or provided justification for each non-critical suggestion
  • I have documented my reasoning in the PR comments where CodeRabbit AI suggestions were not implemented

Test Coverage

  • I have written tests for all new changes/features
  • I have verified that test coverage meets or exceeds 95%
  • I have run the test suite locally and all tests pass

Other information

Have you read the contributing guide?

Summary by CodeRabbit

  • Tests

    • Expanded automated test coverage for event registration (recurring and non‑recurring), email-invite flows, member selection validation, on‑site attendee flows, autocomplete/fallback behavior, UI branching for recurring events, success/error paths, and new helpers/mocks to reduce duplication.
  • Style

    • Minor stylistic and consistency updates to development scripts and tooling to standardize imports, quoting, spacing, and logging formatting.

✏️ Tip: You can customize this high-level summary in your review settings.

@keploy
Copy link
Copy Markdown

keploy Bot commented Nov 27, 2025

No significant changes currently retry

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Nov 27, 2025

Walkthrough

Stylistic normalization of scripts/githooks/check_pom.js and a major rewrite of EventRegistrantsModal tests: replaced inline GraphQL mocks with factory-style mocks, added a renderWithProviders test helper, mocked child components, and expanded coverage for recurring/non‑recurring, invite flow, edge cases, and error paths.

Changes

Cohort / File(s) Summary
Script styling
scripts/githooks/check_pom.js
Switched to direct globSync import and usage, normalized string quotes to single quotes, adjusted spacing/arrow formatting, and reformatted multi-line log/error messages. No functional changes.
Tests — EventRegistrantsModal
src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
Replaced inline mocks with modular GraphQL mock factories (event details, members, attendees, add-attendee mutations); introduced renderWithProviders to wrap MockedProvider/Router/Localization/Redux/i18n; added mocked InviteByEmailModal and AddOnSpotAttendee; refactored tests to cover rendering, closing, validation, non‑recurring and recurring add-attendee flows (success/error), invite-by-email behavior, unknown-user fallback, no-options state, and onspot attendee interactions.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

  • Areas needing extra attention:
    • EventRegistrantsModal.spec.tsx: validate factory mocks produce accurate GraphQL request/response shapes and cover all conditional branches (recurring vs non‑recurring).
    • renderWithProviders: confirm provider setup (MockedProvider, Router, Localization, Redux, i18n) matches application expectations and test isolation.
    • Mocked child components (InviteByEmailModal, AddOnSpotAttendee): ensure mocked props, callbacks, and data-testid changes (e.g., "Close Onspot") align with real components and callers.

Pre-merge checks and finishing touches

✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Enhance Coverage for EventRegistrantsModal' directly summarizes the main objective of the PR—improving test coverage for the EventRegistrantsModal component.
Description check ✅ Passed The PR description covers key required sections: change type, issue number (#4849), summary of coverage improvements, and test coverage checklist items. However, the template sections for 'If relevant, did you update the documentation?' and 'Does this PR introduce a breaking change?' lack substantive responses.
Linked Issues check ✅ Passed The PR addresses all primary coding requirements from #4849: comprehensive test coverage for EventRegistrantsModal.tsx including isRecurring logic, addVariables, invite modal behavior, autocomplete coverage, and the getOptionLabel fallback, achieving the 100% coverage acceptance criterion.
Out of Scope Changes check ✅ Passed The PR includes an update to scripts/githooks/check_pom.js to fix a pre-commit hook failure by updating glob imports for v13 compatibility. This is a necessary maintenance fix unrelated to test coverage improvements but essential for PR submission.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Copy Markdown

Our Pull Request Approval Process

Thanks for contributing!

Testing Your Code

Remember, your PRs won't be reviewed until these criteria are met:

  1. We don't merge PRs with poor code quality.
    1. Follow coding best practices such that CodeRabbit.ai approves your PR.
  2. We don't merge PRs with failed tests.
    1. When tests fail, click on the Details link to learn more.
    2. Write sufficient tests for your changes (CodeCov Patch Test). Your testing level must be better than the target threshold of the repository
    3. Tests may fail if you edit sensitive files. Ask to add the ignore-sensitive-files-pr label if the edits are necessary.
  3. We cannot merge PRs with conflicting files. These must be fixed.

Our policies make our code better.

Reviewers

Do not assign reviewers. Our Queue Monitors will review your PR and assign them.
When your PR has been assigned reviewers contact them to get your code reviewed and approved via:

  1. comments in this PR or
  2. our slack channel

Reviewing Your Code

Your reviewer(s) will have the following roles:

  1. arbitrators of future discussions with other contributors about the validity of your changes
  2. point of contact for evaluating the validity of your work
  3. person who verifies matching issues by others that should be closed.
  4. person who gives general guidance in fixing your tests

CONTRIBUTING.md

Read our CONTRIBUTING.md file. Most importantly:

  1. PRs with issues not assigned to you will be closed by the reviewer
  2. Fix the first comment in the PR so that each issue listed automatically closes

Other

  1. 🎯 Please be considerate of our volunteers' time. Contacting the person who assigned the reviewers is not advised unless they ask for your input. Do not @ the person who did the assignment otherwise.
  2. Read the CONTRIBUTING.md file make

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx (1)

23-44: Add explicit type="button" on AddOnSpotAttendee mock buttons

The inline mock is fine and keeps the AddOnSpot modal isolated, but the two <button>s lack an explicit type, which is what Biome is flagging and can cause unintended submit behavior if this JSX ever sits inside a <form>.

Apply this diff to fix both buttons:

-        <button data-testid="add-onspot-close" onClick={handleClose}>
+        <button
+          type="button"
+          data-testid="add-onspot-close"
+          onClick={handleClose}
+        >
           Close Onspot
         </button>
-        <button data-testid="reload-members-btn" onClick={reloadMembers}>
+        <button
+          type="button"
+          data-testid="reload-members-btn"
+          onClick={reloadMembers}
+        >
           Reload Members
         </button>
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2d0bfba and 3709369.

⛔ Files ignored due to path filters (1)
  • CONTRIBUTING.md is excluded by !*.md
📒 Files selected for processing (2)
  • scripts/githooks/check_pom.js (3 hunks)
  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx (4 hunks)
🧰 Additional context used
🧠 Learnings (28)
📓 Common learnings
Learnt from: Chaitanya1672
Repo: PalisadoesFoundation/talawa-admin PR: 2049
File: src/screens/OrganizationActionItems/ActionItemUpdateModal.tsx:112-138
Timestamp: 2024-10-08T16:13:41.996Z
Learning: The `istanbul ignore next` comments in the `ActionItemUpdateModal.tsx` file were added as part of a commit that introduced tests for the `ActionItemUpdateModal` component. Removing these comments and writing tests to cover the previously ignored lines is recommended to ensure code integrity and improve test coverage.
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-12T00:28:53.713Z
Learning: In talawa-admin PR #4565 continuation (PR #4664 planned), Phase 2A mock isolation strategy uses global vi.clearAllMocks() in afterEach (vitest.setup.ts) plus refactoring module-level vi.fn() into per-test beforeEach blocks across 6 parallelizable issues (2A.0 foundation, 2A.1-2A.4 directory-based fixes, 2A.5 validation). This approach addresses mock call history accumulation enabling maxConcurrency: 2 and 2.3-2.5x speedup. vi.restoreAllMocks() alternative considered for spy restoration during validation phase. Phase 2A (mocks) correctly separated from Phase 2B (DOM/Apollo).
Learnt from: palisadoes
Repo: PalisadoesFoundation/talawa-admin PR: 4718
File: src/components/EventManagement/Dashboard/EventDashboard.mocks.ts:83-114
Timestamp: 2025-11-21T12:42:24.884Z
Learning: In talawa-admin mock files (e.g., EventDashboard.mocks.ts), mock constant names must accurately reflect what they test. Mock names suggesting role-based logic (e.g., MOCKS_WITH_ADMIN_ROLE) are misleading when the component derives role from localStorage rather than mock data. Name mocks based on their distinguishing data features (e.g., MOCKS_WITH_SINGLE_ATTENDEE) or test context (e.g., MOCKS_FOR_ADMIN_STORAGE_TEST).
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-11T11:51:09.236Z
Learning: In talawa-admin PR #4664 (continuation of PR #4565 sharding work), global mock cleanup was implemented via vi.clearAllMocks() in vitest.setup.ts afterEach, along with Apollo Client warning suppression (temporary, pending follow-up PR) and test suite refactoring to per-test StaticMockLink instances. This test isolation strategy addresses mock state leakage that forced maxConcurrency: 1 in PR #4565, enabling future parallel test execution improvements and 3-4x speedup potential.
Learnt from: IITI-tushar
Repo: PalisadoesFoundation/talawa-admin PR: 2718
File: src/screens/UserPortal/Settings/Settings.spec.tsx:0-0
Timestamp: 2024-12-22T17:58:17.818Z
Learning: The matchMedia mock implementation in `Settings.spec.tsx` no longer includes the deprecated addListener and removeListener methods, opting solely for addEventListener and removeEventListener.
Learnt from: bitbard3
Repo: PalisadoesFoundation/talawa-admin PR: 2588
File: src/components/ChangeLanguageDropdown/ChangeLanguageDropdown.spec.tsx:145-155
Timestamp: 2024-12-02T04:20:11.745Z
Learning: In PRs focused solely on refactoring test cases from Jest to Vitest, avoid suggesting optimizations or changes outside the migration scope.
Learnt from: Jashan32
Repo: PalisadoesFoundation/talawa-admin PR: 4524
File: src/screens/Requests/Requests.spec.tsx:0-0
Timestamp: 2025-10-22T22:22:27.696Z
Learning: In talawa-admin tests using react-infinite-scroll-component (e.g., src/screens/Requests/Requests.spec.tsx), jsdom scroll is flaky. Prefer a resilient approach: try querying the container via document.querySelector('[data-testid="infinite-scroll-component"]') and fall back to window scroll if missing. Strengthen assertions by checking for page-2 items (e.g., "User9 Test") to ensure fetchMore actually ran instead of relying only on row counts.
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-01T16:34:10.347Z
Learning: In talawa-admin parallel test sharding (PR #4565), Bootstrap modals render via portals to document.body, causing screen.getByRole('dialog') to find dialogs from ALL concurrent test shards. Solution: use unique data-testid per modal instance and query within that scope using within() helper, or use findAllByTestId and take last element (less robust, timing-dependent).
📚 Learning: 2025-09-29T22:03:31.716Z
Learnt from: syedali237
Repo: PalisadoesFoundation/talawa-admin PR: 4240
File: cypress/pageObjects/AdminPortal/LeftDrawer.ts:2-12
Timestamp: 2025-09-29T22:03:31.716Z
Learning: In the talawa-admin project, when migrating Cypress tests to Page Object Model (POM), the maintainer syedali237 prefers to extract existing test logic without refactoring it, maintaining the original test behavior even if method names or assertions could be improved.

Applied to files:

  • scripts/githooks/check_pom.js
📚 Learning: 2025-08-17T07:39:34.255Z
Learnt from: syedali237
Repo: PalisadoesFoundation/talawa-admin PR: 4077
File: package.json:189-213
Timestamp: 2025-08-17T07:39:34.255Z
Learning: The Talawa Admin codebase primarily uses .spec.tsx/.spec.ts naming convention for unit tests, with Cypress tests using .cy.ts pattern. However, there is at least one .test.tsx file in the codebase, so NYC exclude patterns should include both .spec and .test patterns.

Applied to files:

  • scripts/githooks/check_pom.js
📚 Learning: 2024-12-09T15:54:04.872Z
Learnt from: MayankJha014
Repo: PalisadoesFoundation/talawa-admin PR: 2619
File: vitest.config.ts:0-0
Timestamp: 2024-12-09T15:54:04.872Z
Learning: The files `scripts/custom-test-env.js`, `src/utils/i18nForTest.ts`, and `vitest.setup.ts` are not test files and should not be included in the test pattern.

Applied to files:

  • scripts/githooks/check_pom.js
📚 Learning: 2025-11-21T12:42:24.884Z
Learnt from: palisadoes
Repo: PalisadoesFoundation/talawa-admin PR: 4718
File: src/components/EventManagement/Dashboard/EventDashboard.mocks.ts:83-114
Timestamp: 2025-11-21T12:42:24.884Z
Learning: In talawa-admin mock files (e.g., EventDashboard.mocks.ts), mock constant names must accurately reflect what they test. Mock names suggesting role-based logic (e.g., MOCKS_WITH_ADMIN_ROLE) are misleading when the component derives role from localStorage rather than mock data. Name mocks based on their distinguishing data features (e.g., MOCKS_WITH_SINGLE_ATTENDEE) or test context (e.g., MOCKS_FOR_ADMIN_STORAGE_TEST).

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-10-08T16:13:41.996Z
Learnt from: Chaitanya1672
Repo: PalisadoesFoundation/talawa-admin PR: 2049
File: src/screens/OrganizationActionItems/ActionItemUpdateModal.tsx:112-138
Timestamp: 2024-10-08T16:13:41.996Z
Learning: The `istanbul ignore next` comments in the `ActionItemUpdateModal.tsx` file were added as part of a commit that introduced tests for the `ActionItemUpdateModal` component. Removing these comments and writing tests to cover the previously ignored lines is recommended to ensure code integrity and improve test coverage.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-12-22T17:58:17.818Z
Learnt from: IITI-tushar
Repo: PalisadoesFoundation/talawa-admin PR: 2718
File: src/screens/UserPortal/Settings/Settings.spec.tsx:0-0
Timestamp: 2024-12-22T17:58:17.818Z
Learning: The matchMedia mock implementation in `Settings.spec.tsx` no longer includes the deprecated addListener and removeListener methods, opting solely for addEventListener and removeEventListener.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-11-12T00:28:53.713Z
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-12T00:28:53.713Z
Learning: In talawa-admin PR #4565 continuation (PR #4664 planned), Phase 2A mock isolation strategy uses global vi.clearAllMocks() in afterEach (vitest.setup.ts) plus refactoring module-level vi.fn() into per-test beforeEach blocks across 6 parallelizable issues (2A.0 foundation, 2A.1-2A.4 directory-based fixes, 2A.5 validation). This approach addresses mock call history accumulation enabling maxConcurrency: 2 and 2.3-2.5x speedup. vi.restoreAllMocks() alternative considered for spy restoration during validation phase. Phase 2A (mocks) correctly separated from Phase 2B (DOM/Apollo).

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-10-30T12:01:40.366Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2387
File: src/screens/ManageTag/ManageTagMockComponents/MockAddPeopleToTag.tsx:1-28
Timestamp: 2024-10-30T12:01:40.366Z
Learning: In the `MockAddPeopleToTag` component in `src/screens/ManageTag/ManageTagMockComponents/MockAddPeopleToTag.tsx`, it's acceptable to implement only the necessary props from `InterfaceAddPeopleToTagProps` and omit others like `refetchAssignedMembersData`, `t`, and `tCommon` that are tested separately.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-10-22T22:00:53.943Z
Learnt from: Jashan32
Repo: PalisadoesFoundation/talawa-admin PR: 4524
File: src/screens/OrganizationDashboard/OrganizationDashboardMocks.ts:0-0
Timestamp: 2025-10-22T22:00:53.943Z
Learning: In src/screens/OrganizationDashboard/OrganizationDashboardMocks.ts (and similar mock files), avoid duplicating identical Apollo MockedProvider mocks for repeated query consumption. Prefer adding `maxUsageCount` to the existing mock or using `newData` for reusable responses to keep tests deterministic and reduce drift.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-11-11T11:51:09.236Z
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-11T11:51:09.236Z
Learning: In talawa-admin PR #4664 (continuation of PR #4565 sharding work), global mock cleanup was implemented via vi.clearAllMocks() in vitest.setup.ts afterEach, along with Apollo Client warning suppression (temporary, pending follow-up PR) and test suite refactoring to per-test StaticMockLink instances. This test isolation strategy addresses mock state leakage that forced maxConcurrency: 1 in PR #4565, enabling future parallel test execution improvements and 3-4x speedup potential.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-11-02T07:48:36.443Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2398
File: src/components/AddPeopleToTag/AddPeopleToTag.test.tsx:177-241
Timestamp: 2024-11-02T07:48:36.443Z
Learning: In `src/components/AddPeopleToTag/AddPeopleToTag.test.tsx`, prefer keeping test cases separate and more readable, even if it involves some duplication, instead of extracting common logic into helper functions.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-11-13T18:07:48.621Z
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-13T18:07:48.621Z
Learning: In talawa-admin, Apollo Client pinned to 3.11.10 (not 3.14.0) to avoid deprecation warnings during test isolation work (PR #4565 Phase 2A-2B). Apollo 3.14.0's MockedProvider internally uses deprecated options causing console noise that interferes with debugging. Upgrade to 4.x blocked by dependency conflicts with apollo-upload-client and apollo/link-error. All addTypename props removed from 115+ test files for future compatibility. Will upgrade when dependencies support Apollo 4.x.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-10-22T22:22:27.696Z
Learnt from: Jashan32
Repo: PalisadoesFoundation/talawa-admin PR: 4524
File: src/screens/Requests/Requests.spec.tsx:0-0
Timestamp: 2025-10-22T22:22:27.696Z
Learning: In talawa-admin tests using react-infinite-scroll-component (e.g., src/screens/Requests/Requests.spec.tsx), jsdom scroll is flaky. Prefer a resilient approach: try querying the container via document.querySelector('[data-testid="infinite-scroll-component"]') and fall back to window scroll if missing. Strengthen assertions by checking for page-2 items (e.g., "User9 Test") to ensure fetchMore actually ran instead of relying only on row counts.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-04-20T06:45:57.175Z
Learnt from: bandhan-majumder
Repo: PalisadoesFoundation/talawa-admin PR: 3926
File: src/components/Advertisements/core/AdvertisementRegister/AdvertisementRegister.spec.tsx:403-421
Timestamp: 2025-04-20T06:45:57.175Z
Learning: In the talawa-admin project, the Advertisement component tests (3 files) use both ApolloProvider and MockedProvider together, though it's not a widespread pattern in the codebase. The maintainer has confirmed this approach is needed for these specific tests.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-01-26T12:32:45.867Z
Learnt from: IITI-tushar
Repo: PalisadoesFoundation/talawa-admin PR: 3400
File: src/screens/UserPortal/Organizations/Organizations.spec.tsx:19-19
Timestamp: 2025-01-26T12:32:45.867Z
Learning: In React test files, avoid using React hooks outside component scope (including in static objects like mock data). Instead, initialize hooks inside describe blocks or extract the needed functionality without using hooks.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-04-20T06:45:57.175Z
Learnt from: bandhan-majumder
Repo: PalisadoesFoundation/talawa-admin PR: 3926
File: src/components/Advertisements/core/AdvertisementRegister/AdvertisementRegister.spec.tsx:403-421
Timestamp: 2025-04-20T06:45:57.175Z
Learning: Using both ApolloProvider and MockedProvider together in tests is an established pattern in this codebase, even though it's technically redundant from Apollo Client's best practices perspective.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-02-20T13:35:01.218Z
Learnt from: syedali237
Repo: PalisadoesFoundation/talawa-admin PR: 3712
File: src/components/EventCalender/Yearly/YearlyEventCalender.spec.tsx:113-127
Timestamp: 2025-02-20T13:35:01.218Z
Learning: In React component tests, when testing window resize event handling, it's acceptable to only verify that the event is properly triggered without assertions if the test's focus is specifically on event handling rather than responsive behavior. Testing the actual responsive rendering would be a separate test case.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-03-11T17:45:54.621Z
Learnt from: PurnenduMIshra129th
Repo: PalisadoesFoundation/talawa-admin PR: 3814
File: src/components/UserPortal/OrganizationNavbar/OrganizationNavbar.spec.tsx:137-146
Timestamp: 2025-03-11T17:45:54.621Z
Learning: In OrganizationNavbar.spec.tsx, separate vi.mock implementations for react-router-dom are needed to avoid errors - one for useNavigate and another for useParams.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-11-11T07:47:39.266Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2425
File: src/screens/MemberDetail/MemberDetail.test.tsx:100-100
Timestamp: 2024-11-11T07:47:39.266Z
Learning: In `src/screens/MemberDetail/MemberDetail.test.tsx`, using `await wait();` is acceptable to wait for the render to complete.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-11-27T06:37:47.871Z
Learnt from: adithyanotfound
Repo: PalisadoesFoundation/talawa-admin PR: 2482
File: src/components/AddOn/support/components/Action/Action.spec.tsx:1-8
Timestamp: 2024-11-27T06:37:47.871Z
Learning: In the Talawa-Admin project, the `testing-library/jest-dom` package is imported globally in `vitest.setup.ts`, so individual test files do not need to import it separately.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-11-01T13:26:46.088Z
Learnt from: GlenDsza
Repo: PalisadoesFoundation/talawa-admin PR: 2397
File: src/screens/UserPortal/Volunteer/Actions/Actions.mocks.ts:3-119
Timestamp: 2024-11-01T13:26:46.088Z
Learning: In `src/screens/UserPortal/Volunteer/Actions/Actions.mocks.ts`, the `dueDate` fields in mock data do not determine any test process status, so using future dates is acceptable.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-11-01T12:54:20.857Z
Learnt from: GlenDsza
Repo: PalisadoesFoundation/talawa-admin PR: 2397
File: src/screens/OrganizationActionItems/testObject.mocks.ts:184-402
Timestamp: 2024-11-01T12:54:20.857Z
Learning: In `src/screens/OrganizationActionItems/testObject.mocks.ts`, test failures are not dependent on the `createdAt` fields; hardcoded dates in `createdAt` fields do not cause test failures in this file.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-11-17T22:18:09.680Z
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-17T22:18:09.680Z
Learning: Talawa Admin Phase 2A testing guideline: Allow vi.hoisted() + vi.mock() module-level mocks for shared dependencies; prefer afterEach(() => vi.clearAllMocks()) as default cleanup. Use afterEach(() => vi.restoreAllMocks()) only in suites that create vi.spyOn spies or patch real implementations. Avoid vi.resetAllMocks() globally. The generic “no module-level mocks” rule is updated to “no module-level vi.fn except vi.hoisted module mocks.”

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-11-01T16:34:10.347Z
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-01T16:34:10.347Z
Learning: In talawa-admin parallel test sharding (PR #4565), Bootstrap modals render via portals to document.body, causing screen.getByRole('dialog') to find dialogs from ALL concurrent test shards. Solution: use unique data-testid per modal instance and query within that scope using within() helper, or use findAllByTestId and take last element (less robust, timing-dependent).

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-01-15T05:39:30.480Z
Learnt from: arpit-chakraborty
Repo: PalisadoesFoundation/talawa-admin PR: 3158
File: src/screens/OrganizationTags/OrganizationTagsMocks.ts:384-524
Timestamp: 2025-01-15T05:39:30.480Z
Learning: In OrganizationTagsMocks.ts, MOCKS_NULL_END_CURSOR and MOCKS_NO_MORE_PAGES are designed to test UI handling of edge cases where pagination data is inconsistent (e.g., hasNextPage is true but endCursor is null, or next page returns undefined data).

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-10-25T19:31:37.405Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2355
File: src/screens/ManageTag/ManageTagMocks.ts:187-269
Timestamp: 2024-10-25T19:31:37.405Z
Learning: In `src/screens/ManageTag/ManageTagMocks.ts`, when mocking data for `USER_TAGS_ASSIGNED_MEMBERS` and `USER_TAGS_MEMBERS_TO_ASSIGN_TO`, it's acceptable for user IDs to overlap because the queries serve different purposes and the overlapping IDs can represent realistic scenarios in tests.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-10-28T06:33:09.726Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2362
File: src/components/TagActions/TagActions.test.tsx:251-274
Timestamp: 2024-10-28T06:33:09.726Z
Learning: In `TagActions.test.tsx`, negative test cases for tag operations can be deferred and added later if necessary, according to the team's plan.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
🧬 Code graph analysis (1)
src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx (2)
src/GraphQl/Queries/Queries.ts (3)
  • EVENT_ATTENDEES (316-334)
  • MEMBERS_LIST (808-820)
  • EVENT_DETAILS (248-285)
src/state/store.ts (1)
  • store (4-6)
🪛 Biome (2.1.2)
src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx

[error] 36-36: Provide an explicit type prop for the button element.

The default type of a button is submit, which causes the submission of a form when placed inside a form element. This is likely not the behaviour that you want inside a React application.
Allowed button types are: submit, button or reset

(lint/a11y/useButtonType)


[error] 39-39: Provide an explicit type prop for the button element.

The default type of a button is submit, which causes the submission of a form when placed inside a form element. This is likely not the behaviour that you want inside a React application.
Allowed button types are: submit, button or reset

(lint/a11y/useButtonType)


[error] 67-67: Provide an explicit type prop for the button element.

The default type of a button is submit, which causes the submission of a form when placed inside a form element. This is likely not the behaviour that you want inside a React application.
Allowed button types are: submit, button or reset

(lint/a11y/useButtonType)


[error] 71-71: Provide an explicit type prop for the button element.

The default type of a button is submit, which causes the submission of a form when placed inside a form element. This is likely not the behaviour that you want inside a React application.
Allowed button types are: submit, button or reset

(lint/a11y/useButtonType)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: Check Python Code Style
  • GitHub Check: Generate and Validate Documentation
  • GitHub Check: Analyse Code With CodeQL (javascript)
🔇 Additional comments (11)
scripts/githooks/check_pom.js (3)

54-54: String quoting normalized to single quotes.

The refactoring consistently applies single quotes throughout the file, improving style consistency. No functional impact.

Also applies to: 64-66, 69-69


1-70: Logic and behavior correctly preserved through refactoring.

The core POM validation logic remains unchanged: file discovery, pattern matching, error reporting, and exit codes all function identically. The refactoring is focused on modernizing imports and normalizing code style.


17-18: Verification Complete: globSync Import is Correct

The web search confirms that glob v13.0.0 exports globSync as a named export. The import statement import { globSync } from 'glob' on line 18 and its usage on line 49 are both valid and compatible with glob v13.0.0.

src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx (8)

2-22: Imports and base test setup look good

Using MockedResponse for the Apollo mocks and centralizing render, fireEvent, and waitFor from @testing-library/react is clean and keeps the spec strongly typed. No issues here.


247-259: Base render test gives good smoke coverage

This test neatly verifies that the modal title and the Autocomplete mount once queries resolve, covering the non‑recurring EVENT_DETAILS branch plus attendees/members fetch. Looks good.


282-300: Validation warning test is straightforward and clear

The flow of opening the modal, clicking “Add Registrant” with no selection, and asserting the warning text fully exercises the validation branch. Nicely scoped.


330-356: Error path for the mutation is mirrored cleanly

This test mirrors the success path but drives the makeAddRegistrantErrorMock to assert the error toast, which is exactly what we want for negative coverage. Implementation looks solid.


358-384: Recurring isRecurring branch is exercised correctly

By swapping in makeEventDetailsRecurringMock and the recurring variant of the mutation mock, this test ensures the isRecurring logic and the recurringEventInstanceId variables path are covered. Assertions on both loading and success messages confirm the branch works end‑to‑end.


386-427: Nice coverage of noOptionsText and AddOnSpot reload/close behavior

This test thoroughly covers the “no members found” state and the AddOnSpot modal interactions:

  • Drives the Autocomplete into the noOptionsText branch.
  • Opens the AddOnSpot mock modal.
  • Clicks reloadMembers (backed by the second attendees mock).
  • Closes the modal and asserts it’s gone.

Good use of the dedicated mocks to keep this flow deterministic.


429-455: Invite by Email modal open/close behavior is well validated

The test confirms:

  • The InviteByEmail modal opens when the button is clicked.
  • The correct eventId and isRecurring=false props are wired through.
  • handleClose from the parent closes the modal.

Clean, behavior‑focused coverage; no changes needed.


481-500: getOptionLabel “Unknown User” fallback is nicely exercised

This test does a good job of explicitly opening the Autocomplete dropdown and asserting the “Unknown User” label, which directly targets the fallback branch in getOptionLabel. It’s precise and should guard well against regressions in the label logic.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx (1)

140-160: Fix field name to match query schema

The MEMBERS_LIST query expects emailAddress (per src/GraphQl/Queries/Queries.ts lines 807-819), but this mock uses email. While the current tests only check for "Unknown User" (not email), aligning mock shapes with the actual schema prevents future confusion and makes the mock more realistic.

         {
           id: 'user2',
           name: '',
-          email: 'unknown@example.com',
+          emailAddress: 'unknown@example.com',
           role: 'member',
           avatarURL: null,
           createdAt: '2023-01-01',
           updatedAt: '2023-01-01',
         },
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3709369 and e706ee0.

📒 Files selected for processing (1)
  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx (4 hunks)
🧰 Additional context used
🧠 Learnings (39)
📓 Common learnings
Learnt from: Chaitanya1672
Repo: PalisadoesFoundation/talawa-admin PR: 2049
File: src/screens/OrganizationActionItems/ActionItemUpdateModal.tsx:112-138
Timestamp: 2024-10-08T16:13:41.996Z
Learning: The `istanbul ignore next` comments in the `ActionItemUpdateModal.tsx` file were added as part of a commit that introduced tests for the `ActionItemUpdateModal` component. Removing these comments and writing tests to cover the previously ignored lines is recommended to ensure code integrity and improve test coverage.
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-12T00:28:53.713Z
Learning: In talawa-admin PR #4565 continuation (PR #4664 planned), Phase 2A mock isolation strategy uses global vi.clearAllMocks() in afterEach (vitest.setup.ts) plus refactoring module-level vi.fn() into per-test beforeEach blocks across 6 parallelizable issues (2A.0 foundation, 2A.1-2A.4 directory-based fixes, 2A.5 validation). This approach addresses mock call history accumulation enabling maxConcurrency: 2 and 2.3-2.5x speedup. vi.restoreAllMocks() alternative considered for spy restoration during validation phase. Phase 2A (mocks) correctly separated from Phase 2B (DOM/Apollo).
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-11T11:51:09.236Z
Learning: In talawa-admin PR #4664 (continuation of PR #4565 sharding work), global mock cleanup was implemented via vi.clearAllMocks() in vitest.setup.ts afterEach, along with Apollo Client warning suppression (temporary, pending follow-up PR) and test suite refactoring to per-test StaticMockLink instances. This test isolation strategy addresses mock state leakage that forced maxConcurrency: 1 in PR #4565, enabling future parallel test execution improvements and 3-4x speedup potential.
Learnt from: palisadoes
Repo: PalisadoesFoundation/talawa-admin PR: 4718
File: src/components/EventManagement/Dashboard/EventDashboard.mocks.ts:83-114
Timestamp: 2025-11-21T12:42:24.884Z
Learning: In talawa-admin mock files (e.g., EventDashboard.mocks.ts), mock constant names must accurately reflect what they test. Mock names suggesting role-based logic (e.g., MOCKS_WITH_ADMIN_ROLE) are misleading when the component derives role from localStorage rather than mock data. Name mocks based on their distinguishing data features (e.g., MOCKS_WITH_SINGLE_ATTENDEE) or test context (e.g., MOCKS_FOR_ADMIN_STORAGE_TEST).
Learnt from: IITI-tushar
Repo: PalisadoesFoundation/talawa-admin PR: 3400
File: src/screens/UserPortal/Organizations/Organizations.spec.tsx:19-19
Timestamp: 2025-01-26T12:32:45.867Z
Learning: In React test files, avoid using React hooks outside component scope (including in static objects like mock data). Instead, initialize hooks inside describe blocks or extract the needed functionality without using hooks.
Learnt from: Jashan32
Repo: PalisadoesFoundation/talawa-admin PR: 4524
File: src/screens/OrganizationDashboard/OrganizationDashboardMocks.ts:0-0
Timestamp: 2025-10-22T22:00:53.943Z
Learning: In src/screens/OrganizationDashboard/OrganizationDashboardMocks.ts (and similar mock files), avoid duplicating identical Apollo MockedProvider mocks for repeated query consumption. Prefer adding `maxUsageCount` to the existing mock or using `newData` for reusable responses to keep tests deterministic and reduce drift.
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2398
File: src/components/AddPeopleToTag/AddPeopleToTag.test.tsx:177-241
Timestamp: 2024-11-02T07:48:36.443Z
Learning: In `src/components/AddPeopleToTag/AddPeopleToTag.test.tsx`, prefer keeping test cases separate and more readable, even if it involves some duplication, instead of extracting common logic into helper functions.
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-13T18:07:48.621Z
Learning: In talawa-admin, Apollo Client pinned to 3.11.10 (not 3.14.0) to avoid deprecation warnings during test isolation work (PR #4565 Phase 2A-2B). Apollo 3.14.0's MockedProvider internally uses deprecated options causing console noise that interferes with debugging. Upgrade to 4.x blocked by dependency conflicts with apollo-upload-client and apollo/link-error. All addTypename props removed from 115+ test files for future compatibility. Will upgrade when dependencies support Apollo 4.x.
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-01T16:34:10.347Z
Learning: In talawa-admin parallel test sharding (PR #4565), Bootstrap modals render via portals to document.body, causing screen.getByRole('dialog') to find dialogs from ALL concurrent test shards. Solution: use unique data-testid per modal instance and query within that scope using within() helper, or use findAllByTestId and take last element (less robust, timing-dependent).
Learnt from: bandhan-majumder
Repo: PalisadoesFoundation/talawa-admin PR: 3926
File: src/components/Advertisements/core/AdvertisementRegister/AdvertisementRegister.spec.tsx:403-421
Timestamp: 2025-04-20T06:45:57.175Z
Learning: In the talawa-admin project, the Advertisement component tests (3 files) use both ApolloProvider and MockedProvider together, though it's not a widespread pattern in the codebase. The maintainer has confirmed this approach is needed for these specific tests.
📚 Learning: 2025-11-21T12:42:24.884Z
Learnt from: palisadoes
Repo: PalisadoesFoundation/talawa-admin PR: 4718
File: src/components/EventManagement/Dashboard/EventDashboard.mocks.ts:83-114
Timestamp: 2025-11-21T12:42:24.884Z
Learning: In talawa-admin mock files (e.g., EventDashboard.mocks.ts), mock constant names must accurately reflect what they test. Mock names suggesting role-based logic (e.g., MOCKS_WITH_ADMIN_ROLE) are misleading when the component derives role from localStorage rather than mock data. Name mocks based on their distinguishing data features (e.g., MOCKS_WITH_SINGLE_ATTENDEE) or test context (e.g., MOCKS_FOR_ADMIN_STORAGE_TEST).

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-11-27T11:40:30.717Z
Learnt from: rawadhossain
Repo: PalisadoesFoundation/talawa-admin PR: 4865
File: src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx:261-280
Timestamp: 2025-11-27T11:40:30.717Z
Learning: In Talawa Admin tests (e.g., src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx), react-bootstrap Modal header close buttons don't support custom test IDs, so using getAllByRole('button', { name: /close/i })[0] to select the modal's primary close action is acceptable and stable, as the Modal component consistently exposes "Close" as the accessible label.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-12-22T17:58:17.818Z
Learnt from: IITI-tushar
Repo: PalisadoesFoundation/talawa-admin PR: 2718
File: src/screens/UserPortal/Settings/Settings.spec.tsx:0-0
Timestamp: 2024-12-22T17:58:17.818Z
Learning: The matchMedia mock implementation in `Settings.spec.tsx` no longer includes the deprecated addListener and removeListener methods, opting solely for addEventListener and removeEventListener.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-10-08T16:13:41.996Z
Learnt from: Chaitanya1672
Repo: PalisadoesFoundation/talawa-admin PR: 2049
File: src/screens/OrganizationActionItems/ActionItemUpdateModal.tsx:112-138
Timestamp: 2024-10-08T16:13:41.996Z
Learning: The `istanbul ignore next` comments in the `ActionItemUpdateModal.tsx` file were added as part of a commit that introduced tests for the `ActionItemUpdateModal` component. Removing these comments and writing tests to cover the previously ignored lines is recommended to ensure code integrity and improve test coverage.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-10-30T12:01:40.366Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2387
File: src/screens/ManageTag/ManageTagMockComponents/MockAddPeopleToTag.tsx:1-28
Timestamp: 2024-10-30T12:01:40.366Z
Learning: In the `MockAddPeopleToTag` component in `src/screens/ManageTag/ManageTagMockComponents/MockAddPeopleToTag.tsx`, it's acceptable to implement only the necessary props from `InterfaceAddPeopleToTagProps` and omit others like `refetchAssignedMembersData`, `t`, and `tCommon` that are tested separately.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-11-27T11:41:54.834Z
Learnt from: rawadhossain
Repo: PalisadoesFoundation/talawa-admin PR: 4865
File: src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx:302-328
Timestamp: 2025-11-27T11:41:54.834Z
Learning: In Talawa Admin tests (e.g., src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx), using queryByLabelText with an HTMLElement cast for MUI Autocomplete inputs is acceptable because the Autocomplete input can mount asynchronously and isn't always available for strict getBy* queries at initial render. This pattern is stable for MUI Autocomplete components.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-11-12T00:28:53.713Z
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-12T00:28:53.713Z
Learning: In talawa-admin PR #4565 continuation (PR #4664 planned), Phase 2A mock isolation strategy uses global vi.clearAllMocks() in afterEach (vitest.setup.ts) plus refactoring module-level vi.fn() into per-test beforeEach blocks across 6 parallelizable issues (2A.0 foundation, 2A.1-2A.4 directory-based fixes, 2A.5 validation). This approach addresses mock call history accumulation enabling maxConcurrency: 2 and 2.3-2.5x speedup. vi.restoreAllMocks() alternative considered for spy restoration during validation phase. Phase 2A (mocks) correctly separated from Phase 2B (DOM/Apollo).

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-10-22T22:00:53.943Z
Learnt from: Jashan32
Repo: PalisadoesFoundation/talawa-admin PR: 4524
File: src/screens/OrganizationDashboard/OrganizationDashboardMocks.ts:0-0
Timestamp: 2025-10-22T22:00:53.943Z
Learning: In src/screens/OrganizationDashboard/OrganizationDashboardMocks.ts (and similar mock files), avoid duplicating identical Apollo MockedProvider mocks for repeated query consumption. Prefer adding `maxUsageCount` to the existing mock or using `newData` for reusable responses to keep tests deterministic and reduce drift.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-11-11T11:51:09.236Z
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-11T11:51:09.236Z
Learning: In talawa-admin PR #4664 (continuation of PR #4565 sharding work), global mock cleanup was implemented via vi.clearAllMocks() in vitest.setup.ts afterEach, along with Apollo Client warning suppression (temporary, pending follow-up PR) and test suite refactoring to per-test StaticMockLink instances. This test isolation strategy addresses mock state leakage that forced maxConcurrency: 1 in PR #4565, enabling future parallel test execution improvements and 3-4x speedup potential.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-11-02T07:48:36.443Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2398
File: src/components/AddPeopleToTag/AddPeopleToTag.test.tsx:177-241
Timestamp: 2024-11-02T07:48:36.443Z
Learning: In `src/components/AddPeopleToTag/AddPeopleToTag.test.tsx`, prefer keeping test cases separate and more readable, even if it involves some duplication, instead of extracting common logic into helper functions.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-02-09T06:22:23.028Z
Learnt from: adithyanotfound
Repo: PalisadoesFoundation/talawa-admin PR: 3569
File: src/screens/UserPortal/Settings/Settings.spec.tsx:314-316
Timestamp: 2025-02-09T06:22:23.028Z
Learning: In the Settings component's tests, `fireEvent.change` should be used instead of `userEvent.type` for the address input field, as `userEvent` doesn't work correctly in this case.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-08-13T06:52:48.055Z
Learnt from: syedali237
Repo: PalisadoesFoundation/talawa-admin PR: 4040
File: cypress/pageObjects/AdminPortal/PeoplePage.ts:30-34
Timestamp: 2025-08-13T06:52:48.055Z
Learning: In the talawa-admin project's Cypress tests, specifically in cypress/pageObjects/AdminPortal/PeoplePage.ts, the element '[data-testid="existingUser"]' is a toggle control that requires .trigger('click') instead of .click() because it's not a standard button but a custom UI component that needs direct event triggering.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-11-02T07:31:50.788Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2398
File: src/components/TagActions/TagActions.tsx:216-0
Timestamp: 2024-11-02T07:31:50.788Z
Learning: In `src/components/TagActions/TagActions.tsx`, the submit button should not be disabled when no tags are selected, as per the design preference.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-11-01T13:26:46.088Z
Learnt from: GlenDsza
Repo: PalisadoesFoundation/talawa-admin PR: 2397
File: src/screens/UserPortal/Volunteer/Actions/Actions.mocks.ts:3-119
Timestamp: 2024-11-01T13:26:46.088Z
Learning: In `src/screens/UserPortal/Volunteer/Actions/Actions.mocks.ts`, the `dueDate` fields in mock data do not determine any test process status, so using future dates is acceptable.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-11-17T22:18:09.680Z
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-17T22:18:09.680Z
Learning: Talawa Admin Phase 2A testing guideline: Allow vi.hoisted() + vi.mock() module-level mocks for shared dependencies; prefer afterEach(() => vi.clearAllMocks()) as default cleanup. Use afterEach(() => vi.restoreAllMocks()) only in suites that create vi.spyOn spies or patch real implementations. Avoid vi.resetAllMocks() globally. The generic “no module-level mocks” rule is updated to “no module-level vi.fn except vi.hoisted module mocks.”

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-11-13T18:07:48.621Z
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-13T18:07:48.621Z
Learning: In talawa-admin, Apollo Client pinned to 3.11.10 (not 3.14.0) to avoid deprecation warnings during test isolation work (PR #4565 Phase 2A-2B). Apollo 3.14.0's MockedProvider internally uses deprecated options causing console noise that interferes with debugging. Upgrade to 4.x blocked by dependency conflicts with apollo-upload-client and apollo/link-error. All addTypename props removed from 115+ test files for future compatibility. Will upgrade when dependencies support Apollo 4.x.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-03-11T17:45:54.621Z
Learnt from: PurnenduMIshra129th
Repo: PalisadoesFoundation/talawa-admin PR: 3814
File: src/components/UserPortal/OrganizationNavbar/OrganizationNavbar.spec.tsx:137-146
Timestamp: 2025-03-11T17:45:54.621Z
Learning: In OrganizationNavbar.spec.tsx, separate vi.mock implementations for react-router-dom are needed to avoid errors - one for useNavigate and another for useParams.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-04-20T06:45:57.175Z
Learnt from: bandhan-majumder
Repo: PalisadoesFoundation/talawa-admin PR: 3926
File: src/components/Advertisements/core/AdvertisementRegister/AdvertisementRegister.spec.tsx:403-421
Timestamp: 2025-04-20T06:45:57.175Z
Learning: In the talawa-admin project, the Advertisement component tests (3 files) use both ApolloProvider and MockedProvider together, though it's not a widespread pattern in the codebase. The maintainer has confirmed this approach is needed for these specific tests.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-04-20T06:45:57.175Z
Learnt from: bandhan-majumder
Repo: PalisadoesFoundation/talawa-admin PR: 3926
File: src/components/Advertisements/core/AdvertisementRegister/AdvertisementRegister.spec.tsx:403-421
Timestamp: 2025-04-20T06:45:57.175Z
Learning: Using both ApolloProvider and MockedProvider together in tests is an established pattern in this codebase, even though it's technically redundant from Apollo Client's best practices perspective.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-01-26T12:32:45.867Z
Learnt from: IITI-tushar
Repo: PalisadoesFoundation/talawa-admin PR: 3400
File: src/screens/UserPortal/Organizations/Organizations.spec.tsx:19-19
Timestamp: 2025-01-26T12:32:45.867Z
Learning: In React test files, avoid using React hooks outside component scope (including in static objects like mock data). Instead, initialize hooks inside describe blocks or extract the needed functionality without using hooks.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-10-22T22:22:27.696Z
Learnt from: Jashan32
Repo: PalisadoesFoundation/talawa-admin PR: 4524
File: src/screens/Requests/Requests.spec.tsx:0-0
Timestamp: 2025-10-22T22:22:27.696Z
Learning: In talawa-admin tests using react-infinite-scroll-component (e.g., src/screens/Requests/Requests.spec.tsx), jsdom scroll is flaky. Prefer a resilient approach: try querying the container via document.querySelector('[data-testid="infinite-scroll-component"]') and fall back to window scroll if missing. Strengthen assertions by checking for page-2 items (e.g., "User9 Test") to ensure fetchMore actually ran instead of relying only on row counts.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-02-20T13:35:01.218Z
Learnt from: syedali237
Repo: PalisadoesFoundation/talawa-admin PR: 3712
File: src/components/EventCalender/Yearly/YearlyEventCalender.spec.tsx:113-127
Timestamp: 2025-02-20T13:35:01.218Z
Learning: In React component tests, when testing window resize event handling, it's acceptable to only verify that the event is properly triggered without assertions if the test's focus is specifically on event handling rather than responsive behavior. Testing the actual responsive rendering would be a separate test case.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-11-01T16:34:10.347Z
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-01T16:34:10.347Z
Learning: In talawa-admin parallel test sharding (PR #4565), Bootstrap modals render via portals to document.body, causing screen.getByRole('dialog') to find dialogs from ALL concurrent test shards. Solution: use unique data-testid per modal instance and query within that scope using within() helper, or use findAllByTestId and take last element (less robust, timing-dependent).

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-10-28T06:38:43.765Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2362
File: src/components/TagActions/TagActions.test.tsx:123-131
Timestamp: 2024-10-28T06:38:43.765Z
Learning: In `TagActions.test.tsx`, `link2` is the error link used to simulate errors, so the existing test cases sufficiently cover error handling.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-10-28T06:33:09.726Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2362
File: src/components/TagActions/TagActions.test.tsx:251-274
Timestamp: 2024-10-28T06:33:09.726Z
Learning: In `TagActions.test.tsx`, negative test cases for tag operations can be deferred and added later if necessary, according to the team's plan.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-10-08T16:13:41.996Z
Learnt from: Doraemon012
Repo: PalisadoesFoundation/talawa-admin PR: 1988
File: src/screens/MemberDetail/MemberDetail.test.tsx:170-195
Timestamp: 2024-10-08T16:13:41.996Z
Learning: In unit tests for this project, direct `click()` calls are acceptable; avoid suggesting replacing them with `userEvent.click()`.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-10-30T11:57:55.067Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2387
File: src/components/InfiniteScrollLoader/InfiniteScrollLoader.test.tsx:5-14
Timestamp: 2024-10-30T11:57:55.067Z
Learning: Currently, the developer considers the existing test coverage for the `InfiniteScrollLoader` component sufficient and prefers not to expand it at this time.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-11-01T12:54:20.857Z
Learnt from: GlenDsza
Repo: PalisadoesFoundation/talawa-admin PR: 2397
File: src/screens/OrganizationActionItems/testObject.mocks.ts:184-402
Timestamp: 2024-11-01T12:54:20.857Z
Learning: In `src/screens/OrganizationActionItems/testObject.mocks.ts`, test failures are not dependent on the `createdAt` fields; hardcoded dates in `createdAt` fields do not cause test failures in this file.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-10-25T19:31:37.405Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2355
File: src/screens/ManageTag/ManageTagMocks.ts:187-269
Timestamp: 2024-10-25T19:31:37.405Z
Learning: In `src/screens/ManageTag/ManageTagMocks.ts`, when mocking data for `USER_TAGS_ASSIGNED_MEMBERS` and `USER_TAGS_MEMBERS_TO_ASSIGN_TO`, it's acceptable for user IDs to overlap because the queries serve different purposes and the overlapping IDs can represent realistic scenarios in tests.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-11-06T05:15:51.829Z
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-06T05:15:51.829Z
Learning: In talawa-admin PR #4565, test sharding implementation achieved 2x speedup (8min → 4min) with conservative settings (maxConcurrency: 1, concurrent: false, maxThreads: 2 in CI) due to test isolation issues across 269 test files. These settings prevent OOM and race conditions. Higher speedup (3-4x) is achievable but requires systematic test isolation improvements. Apollo Client addTypename={false} deprecation warnings (142 files) are suppressed with TODO for follow-up fixes.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-04-20T06:41:55.660Z
Learnt from: bandhan-majumder
Repo: PalisadoesFoundation/talawa-admin PR: 3926
File: src/components/Advertisements/Advertisements.spec.tsx:316-327
Timestamp: 2025-04-20T06:41:55.660Z
Learning: In the Talawa Admin project's test files, button click events may trigger asynchronous operations that require awaiting the act() call, even when using fireEvent.click() which is typically synchronous.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-07-11T20:14:07.922Z
Learnt from: syedali237
Repo: PalisadoesFoundation/talawa-admin PR: 3988
File: cypress/pageObjects/AdminPortal/AdminDashboard.ts:4-5
Timestamp: 2025-07-11T20:14:07.922Z
Learning: In the talawa-admin project, mixing `data-cy` and `data-testid` attributes in Cypress selectors may be necessary due to technical constraints where UI library components have built-in `data-testid` attributes but don't support adding custom `data-cy` attributes.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-07-12T19:56:14.106Z
Learnt from: syedali237
Repo: PalisadoesFoundation/talawa-admin PR: 3988
File: cypress/support/commands.ts:42-46
Timestamp: 2025-07-12T19:56:14.106Z
Learning: In the talawa-admin project, the toast notification component is a built-in component that doesn't support adding custom data-cy attributes. When testing toast messages in Cypress, use the `[role=alert]` selector combined with `contain.text` assertions to verify the expected message content, which works correctly even when multiple toasts are displayed simultaneously.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-10-30T15:46:05.784Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2387
File: src/components/AddPeopleToTag/AddPeopleToTag.tsx:78-104
Timestamp: 2024-10-30T15:46:05.784Z
Learning: In `src/components/AddPeopleToTag/AddPeopleToTag.tsx`, and similar components, the team prefers to keep the current implementation of the `updateQuery` logic in infinite scroll functionality consistent across all screens.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-11-02T07:39:51.950Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2398
File: src/screens/ManageTag/ManageTag.tsx:108-0
Timestamp: 2024-11-02T07:39:51.950Z
Learning: In `src/screens/ManageTag/ManageTag.tsx`, when `assignedMemberSearchFirstName` or `assignedMemberSearchLastName` are empty strings, the query in the `useQuery` for `USER_TAGS_ASSIGNED_MEMBERS` intentionally includes filters with empty strings to match all entries.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-12-02T04:20:11.745Z
Learnt from: bitbard3
Repo: PalisadoesFoundation/talawa-admin PR: 2588
File: src/components/ChangeLanguageDropdown/ChangeLanguageDropdown.spec.tsx:145-155
Timestamp: 2024-12-02T04:20:11.745Z
Learning: In PRs focused solely on refactoring test cases from Jest to Vitest, avoid suggesting optimizations or changes outside the migration scope.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-11-11T07:47:39.266Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2425
File: src/screens/MemberDetail/MemberDetail.test.tsx:100-100
Timestamp: 2024-11-11T07:47:39.266Z
Learning: In `src/screens/MemberDetail/MemberDetail.test.tsx`, using `await wait();` is acceptable to wait for the render to complete.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-01-15T05:39:30.480Z
Learnt from: arpit-chakraborty
Repo: PalisadoesFoundation/talawa-admin PR: 3158
File: src/screens/OrganizationTags/OrganizationTagsMocks.ts:384-524
Timestamp: 2025-01-15T05:39:30.480Z
Learning: In OrganizationTagsMocks.ts, MOCKS_NULL_END_CURSOR and MOCKS_NO_MORE_PAGES are designed to test UI handling of edge cases where pagination data is inconsistent (e.g., hasNextPage is true but endCursor is null, or next page returns undefined data).

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
🧬 Code graph analysis (1)
src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx (3)
src/GraphQl/Queries/Queries.ts (3)
  • EVENT_ATTENDEES (316-334)
  • MEMBERS_LIST (808-820)
  • EVENT_DETAILS (248-285)
src/state/store.ts (1)
  • store (4-6)
src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.tsx (1)
  • EventRegistrantsModal (65-209)
🪛 Biome (2.1.2)
src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx

[error] 36-36: Provide an explicit type prop for the button element.

The default type of a button is submit, which causes the submission of a form when placed inside a form element. This is likely not the behaviour that you want inside a React application.
Allowed button types are: submit, button or reset

(lint/a11y/useButtonType)


[error] 39-39: Provide an explicit type prop for the button element.

The default type of a button is submit, which causes the submission of a form when placed inside a form element. This is likely not the behaviour that you want inside a React application.
Allowed button types are: submit, button or reset

(lint/a11y/useButtonType)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: Check Python Code Style
  • GitHub Check: Generate and Validate Documentation
  • GitHub Check: Analyse Code With CodeQL (javascript)
🔇 Additional comments (2)
src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx (2)

253-265: Test suite is well-structured with comprehensive coverage

The test suite effectively covers:

  • Basic rendering and element availability
  • Modal close interactions
  • Validation warnings for missing selections
  • Non-recurring and recurring event flows with correct variable branching
  • Error handling for mutation failures
  • Nested modal interactions (AddOnSpotAttendee, InviteByEmailModal)
  • getOptionLabel fallback to "Unknown User"

The use of inline vi.fn() for the handleClose test (line 268) aligns with Phase 2A mock isolation guidelines. Based on learnings, the queryByLabelText with cast pattern for MUI Autocomplete is acceptable.


392-433: Good use of duplicate mock for refetch consumption

The duplicate makeAttendeesEmptyMock() at line 398 correctly handles Apollo's mock consumption behavior when reloadMembers triggers attendeesRefetch(). This pattern aligns with the project convention of providing sufficient mocks for repeated query consumption.

Comment thread src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx Outdated
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e706ee0 and 275f885.

📒 Files selected for processing (1)
  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx (4 hunks)
🧰 Additional context used
🧠 Learnings (40)
📓 Common learnings
Learnt from: Chaitanya1672
Repo: PalisadoesFoundation/talawa-admin PR: 2049
File: src/screens/OrganizationActionItems/ActionItemUpdateModal.tsx:112-138
Timestamp: 2024-10-08T16:13:41.996Z
Learning: The `istanbul ignore next` comments in the `ActionItemUpdateModal.tsx` file were added as part of a commit that introduced tests for the `ActionItemUpdateModal` component. Removing these comments and writing tests to cover the previously ignored lines is recommended to ensure code integrity and improve test coverage.
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-12T00:28:53.713Z
Learning: In talawa-admin PR #4565 continuation (PR #4664 planned), Phase 2A mock isolation strategy uses global vi.clearAllMocks() in afterEach (vitest.setup.ts) plus refactoring module-level vi.fn() into per-test beforeEach blocks across 6 parallelizable issues (2A.0 foundation, 2A.1-2A.4 directory-based fixes, 2A.5 validation). This approach addresses mock call history accumulation enabling maxConcurrency: 2 and 2.3-2.5x speedup. vi.restoreAllMocks() alternative considered for spy restoration during validation phase. Phase 2A (mocks) correctly separated from Phase 2B (DOM/Apollo).
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-11T11:51:09.236Z
Learning: In talawa-admin PR #4664 (continuation of PR #4565 sharding work), global mock cleanup was implemented via vi.clearAllMocks() in vitest.setup.ts afterEach, along with Apollo Client warning suppression (temporary, pending follow-up PR) and test suite refactoring to per-test StaticMockLink instances. This test isolation strategy addresses mock state leakage that forced maxConcurrency: 1 in PR #4565, enabling future parallel test execution improvements and 3-4x speedup potential.
Learnt from: palisadoes
Repo: PalisadoesFoundation/talawa-admin PR: 4718
File: src/components/EventManagement/Dashboard/EventDashboard.mocks.ts:83-114
Timestamp: 2025-11-21T12:42:24.884Z
Learning: In talawa-admin mock files (e.g., EventDashboard.mocks.ts), mock constant names must accurately reflect what they test. Mock names suggesting role-based logic (e.g., MOCKS_WITH_ADMIN_ROLE) are misleading when the component derives role from localStorage rather than mock data. Name mocks based on their distinguishing data features (e.g., MOCKS_WITH_SINGLE_ATTENDEE) or test context (e.g., MOCKS_FOR_ADMIN_STORAGE_TEST).
Learnt from: Jashan32
Repo: PalisadoesFoundation/talawa-admin PR: 4524
File: src/screens/OrganizationDashboard/OrganizationDashboardMocks.ts:0-0
Timestamp: 2025-10-22T22:00:53.943Z
Learning: In src/screens/OrganizationDashboard/OrganizationDashboardMocks.ts (and similar mock files), avoid duplicating identical Apollo MockedProvider mocks for repeated query consumption. Prefer adding `maxUsageCount` to the existing mock or using `newData` for reusable responses to keep tests deterministic and reduce drift.
Learnt from: IITI-tushar
Repo: PalisadoesFoundation/talawa-admin PR: 2718
File: src/screens/UserPortal/Settings/Settings.spec.tsx:0-0
Timestamp: 2024-12-22T17:58:17.818Z
Learning: The matchMedia mock implementation in `Settings.spec.tsx` no longer includes the deprecated addListener and removeListener methods, opting solely for addEventListener and removeEventListener.
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-13T18:07:48.621Z
Learning: In talawa-admin, Apollo Client pinned to 3.11.10 (not 3.14.0) to avoid deprecation warnings during test isolation work (PR #4565 Phase 2A-2B). Apollo 3.14.0's MockedProvider internally uses deprecated options causing console noise that interferes with debugging. Upgrade to 4.x blocked by dependency conflicts with apollo-upload-client and apollo/link-error. All addTypename props removed from 115+ test files for future compatibility. Will upgrade when dependencies support Apollo 4.x.
Learnt from: bandhan-majumder
Repo: PalisadoesFoundation/talawa-admin PR: 3926
File: src/components/Advertisements/core/AdvertisementRegister/AdvertisementRegister.spec.tsx:403-421
Timestamp: 2025-04-20T06:45:57.175Z
Learning: In the talawa-admin project, the Advertisement component tests (3 files) use both ApolloProvider and MockedProvider together, though it's not a widespread pattern in the codebase. The maintainer has confirmed this approach is needed for these specific tests.
Learnt from: IITI-tushar
Repo: PalisadoesFoundation/talawa-admin PR: 3400
File: src/screens/UserPortal/Organizations/Organizations.spec.tsx:19-19
Timestamp: 2025-01-26T12:32:45.867Z
Learning: In React test files, avoid using React hooks outside component scope (including in static objects like mock data). Instead, initialize hooks inside describe blocks or extract the needed functionality without using hooks.
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2398
File: src/components/AddPeopleToTag/AddPeopleToTag.test.tsx:177-241
Timestamp: 2024-11-02T07:48:36.443Z
Learning: In `src/components/AddPeopleToTag/AddPeopleToTag.test.tsx`, prefer keeping test cases separate and more readable, even if it involves some duplication, instead of extracting common logic into helper functions.
📚 Learning: 2025-11-21T12:42:24.884Z
Learnt from: palisadoes
Repo: PalisadoesFoundation/talawa-admin PR: 4718
File: src/components/EventManagement/Dashboard/EventDashboard.mocks.ts:83-114
Timestamp: 2025-11-21T12:42:24.884Z
Learning: In talawa-admin mock files (e.g., EventDashboard.mocks.ts), mock constant names must accurately reflect what they test. Mock names suggesting role-based logic (e.g., MOCKS_WITH_ADMIN_ROLE) are misleading when the component derives role from localStorage rather than mock data. Name mocks based on their distinguishing data features (e.g., MOCKS_WITH_SINGLE_ATTENDEE) or test context (e.g., MOCKS_FOR_ADMIN_STORAGE_TEST).

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-11-27T11:40:30.717Z
Learnt from: rawadhossain
Repo: PalisadoesFoundation/talawa-admin PR: 4865
File: src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx:261-280
Timestamp: 2025-11-27T11:40:30.717Z
Learning: In Talawa Admin tests (e.g., src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx), react-bootstrap Modal header close buttons don't support custom test IDs, so using getAllByRole('button', { name: /close/i })[0] to select the modal's primary close action is acceptable and stable, as the Modal component consistently exposes "Close" as the accessible label.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-12-22T17:58:17.818Z
Learnt from: IITI-tushar
Repo: PalisadoesFoundation/talawa-admin PR: 2718
File: src/screens/UserPortal/Settings/Settings.spec.tsx:0-0
Timestamp: 2024-12-22T17:58:17.818Z
Learning: The matchMedia mock implementation in `Settings.spec.tsx` no longer includes the deprecated addListener and removeListener methods, opting solely for addEventListener and removeEventListener.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-10-08T16:13:41.996Z
Learnt from: Chaitanya1672
Repo: PalisadoesFoundation/talawa-admin PR: 2049
File: src/screens/OrganizationActionItems/ActionItemUpdateModal.tsx:112-138
Timestamp: 2024-10-08T16:13:41.996Z
Learning: The `istanbul ignore next` comments in the `ActionItemUpdateModal.tsx` file were added as part of a commit that introduced tests for the `ActionItemUpdateModal` component. Removing these comments and writing tests to cover the previously ignored lines is recommended to ensure code integrity and improve test coverage.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-10-30T12:01:40.366Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2387
File: src/screens/ManageTag/ManageTagMockComponents/MockAddPeopleToTag.tsx:1-28
Timestamp: 2024-10-30T12:01:40.366Z
Learning: In the `MockAddPeopleToTag` component in `src/screens/ManageTag/ManageTagMockComponents/MockAddPeopleToTag.tsx`, it's acceptable to implement only the necessary props from `InterfaceAddPeopleToTagProps` and omit others like `refetchAssignedMembersData`, `t`, and `tCommon` that are tested separately.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-10-22T22:00:53.943Z
Learnt from: Jashan32
Repo: PalisadoesFoundation/talawa-admin PR: 4524
File: src/screens/OrganizationDashboard/OrganizationDashboardMocks.ts:0-0
Timestamp: 2025-10-22T22:00:53.943Z
Learning: In src/screens/OrganizationDashboard/OrganizationDashboardMocks.ts (and similar mock files), avoid duplicating identical Apollo MockedProvider mocks for repeated query consumption. Prefer adding `maxUsageCount` to the existing mock or using `newData` for reusable responses to keep tests deterministic and reduce drift.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-11-27T11:41:54.834Z
Learnt from: rawadhossain
Repo: PalisadoesFoundation/talawa-admin PR: 4865
File: src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx:302-328
Timestamp: 2025-11-27T11:41:54.834Z
Learning: In Talawa Admin tests (e.g., src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx), using queryByLabelText with an HTMLElement cast for MUI Autocomplete inputs is acceptable because the Autocomplete input can mount asynchronously and isn't always available for strict getBy* queries at initial render. This pattern is stable for MUI Autocomplete components.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-11-11T11:51:09.236Z
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-11T11:51:09.236Z
Learning: In talawa-admin PR #4664 (continuation of PR #4565 sharding work), global mock cleanup was implemented via vi.clearAllMocks() in vitest.setup.ts afterEach, along with Apollo Client warning suppression (temporary, pending follow-up PR) and test suite refactoring to per-test StaticMockLink instances. This test isolation strategy addresses mock state leakage that forced maxConcurrency: 1 in PR #4565, enabling future parallel test execution improvements and 3-4x speedup potential.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-11-12T00:28:53.713Z
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-12T00:28:53.713Z
Learning: In talawa-admin PR #4565 continuation (PR #4664 planned), Phase 2A mock isolation strategy uses global vi.clearAllMocks() in afterEach (vitest.setup.ts) plus refactoring module-level vi.fn() into per-test beforeEach blocks across 6 parallelizable issues (2A.0 foundation, 2A.1-2A.4 directory-based fixes, 2A.5 validation). This approach addresses mock call history accumulation enabling maxConcurrency: 2 and 2.3-2.5x speedup. vi.restoreAllMocks() alternative considered for spy restoration during validation phase. Phase 2A (mocks) correctly separated from Phase 2B (DOM/Apollo).

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-11-01T16:34:10.347Z
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-01T16:34:10.347Z
Learning: In talawa-admin parallel test sharding (PR #4565), Bootstrap modals render via portals to document.body, causing screen.getByRole('dialog') to find dialogs from ALL concurrent test shards. Solution: use unique data-testid per modal instance and query within that scope using within() helper, or use findAllByTestId and take last element (less robust, timing-dependent).

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-02-09T06:22:23.028Z
Learnt from: adithyanotfound
Repo: PalisadoesFoundation/talawa-admin PR: 3569
File: src/screens/UserPortal/Settings/Settings.spec.tsx:314-316
Timestamp: 2025-02-09T06:22:23.028Z
Learning: In the Settings component's tests, `fireEvent.change` should be used instead of `userEvent.type` for the address input field, as `userEvent` doesn't work correctly in this case.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-08-13T06:52:48.055Z
Learnt from: syedali237
Repo: PalisadoesFoundation/talawa-admin PR: 4040
File: cypress/pageObjects/AdminPortal/PeoplePage.ts:30-34
Timestamp: 2025-08-13T06:52:48.055Z
Learning: In the talawa-admin project's Cypress tests, specifically in cypress/pageObjects/AdminPortal/PeoplePage.ts, the element '[data-testid="existingUser"]' is a toggle control that requires .trigger('click') instead of .click() because it's not a standard button but a custom UI component that needs direct event triggering.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-11-02T07:31:50.788Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2398
File: src/components/TagActions/TagActions.tsx:216-0
Timestamp: 2024-11-02T07:31:50.788Z
Learning: In `src/components/TagActions/TagActions.tsx`, the submit button should not be disabled when no tags are selected, as per the design preference.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-11-01T13:26:46.088Z
Learnt from: GlenDsza
Repo: PalisadoesFoundation/talawa-admin PR: 2397
File: src/screens/UserPortal/Volunteer/Actions/Actions.mocks.ts:3-119
Timestamp: 2024-11-01T13:26:46.088Z
Learning: In `src/screens/UserPortal/Volunteer/Actions/Actions.mocks.ts`, the `dueDate` fields in mock data do not determine any test process status, so using future dates is acceptable.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-11-17T22:18:09.680Z
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-17T22:18:09.680Z
Learning: Talawa Admin Phase 2A testing guideline: Allow vi.hoisted() + vi.mock() module-level mocks for shared dependencies; prefer afterEach(() => vi.clearAllMocks()) as default cleanup. Use afterEach(() => vi.restoreAllMocks()) only in suites that create vi.spyOn spies or patch real implementations. Avoid vi.resetAllMocks() globally. The generic “no module-level mocks” rule is updated to “no module-level vi.fn except vi.hoisted module mocks.”

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-11-13T18:07:48.621Z
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-13T18:07:48.621Z
Learning: In talawa-admin, Apollo Client pinned to 3.11.10 (not 3.14.0) to avoid deprecation warnings during test isolation work (PR #4565 Phase 2A-2B). Apollo 3.14.0's MockedProvider internally uses deprecated options causing console noise that interferes with debugging. Upgrade to 4.x blocked by dependency conflicts with apollo-upload-client and apollo/link-error. All addTypename props removed from 115+ test files for future compatibility. Will upgrade when dependencies support Apollo 4.x.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-03-11T17:45:54.621Z
Learnt from: PurnenduMIshra129th
Repo: PalisadoesFoundation/talawa-admin PR: 3814
File: src/components/UserPortal/OrganizationNavbar/OrganizationNavbar.spec.tsx:137-146
Timestamp: 2025-03-11T17:45:54.621Z
Learning: In OrganizationNavbar.spec.tsx, separate vi.mock implementations for react-router-dom are needed to avoid errors - one for useNavigate and another for useParams.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-04-20T06:45:57.175Z
Learnt from: bandhan-majumder
Repo: PalisadoesFoundation/talawa-admin PR: 3926
File: src/components/Advertisements/core/AdvertisementRegister/AdvertisementRegister.spec.tsx:403-421
Timestamp: 2025-04-20T06:45:57.175Z
Learning: In the talawa-admin project, the Advertisement component tests (3 files) use both ApolloProvider and MockedProvider together, though it's not a widespread pattern in the codebase. The maintainer has confirmed this approach is needed for these specific tests.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-04-20T06:45:57.175Z
Learnt from: bandhan-majumder
Repo: PalisadoesFoundation/talawa-admin PR: 3926
File: src/components/Advertisements/core/AdvertisementRegister/AdvertisementRegister.spec.tsx:403-421
Timestamp: 2025-04-20T06:45:57.175Z
Learning: Using both ApolloProvider and MockedProvider together in tests is an established pattern in this codebase, even though it's technically redundant from Apollo Client's best practices perspective.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-01-26T12:32:45.867Z
Learnt from: IITI-tushar
Repo: PalisadoesFoundation/talawa-admin PR: 3400
File: src/screens/UserPortal/Organizations/Organizations.spec.tsx:19-19
Timestamp: 2025-01-26T12:32:45.867Z
Learning: In React test files, avoid using React hooks outside component scope (including in static objects like mock data). Instead, initialize hooks inside describe blocks or extract the needed functionality without using hooks.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-10-22T22:22:27.696Z
Learnt from: Jashan32
Repo: PalisadoesFoundation/talawa-admin PR: 4524
File: src/screens/Requests/Requests.spec.tsx:0-0
Timestamp: 2025-10-22T22:22:27.696Z
Learning: In talawa-admin tests using react-infinite-scroll-component (e.g., src/screens/Requests/Requests.spec.tsx), jsdom scroll is flaky. Prefer a resilient approach: try querying the container via document.querySelector('[data-testid="infinite-scroll-component"]') and fall back to window scroll if missing. Strengthen assertions by checking for page-2 items (e.g., "User9 Test") to ensure fetchMore actually ran instead of relying only on row counts.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-02-20T13:35:01.218Z
Learnt from: syedali237
Repo: PalisadoesFoundation/talawa-admin PR: 3712
File: src/components/EventCalender/Yearly/YearlyEventCalender.spec.tsx:113-127
Timestamp: 2025-02-20T13:35:01.218Z
Learning: In React component tests, when testing window resize event handling, it's acceptable to only verify that the event is properly triggered without assertions if the test's focus is specifically on event handling rather than responsive behavior. Testing the actual responsive rendering would be a separate test case.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-10-28T06:38:43.765Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2362
File: src/components/TagActions/TagActions.test.tsx:123-131
Timestamp: 2024-10-28T06:38:43.765Z
Learning: In `TagActions.test.tsx`, `link2` is the error link used to simulate errors, so the existing test cases sufficiently cover error handling.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-10-28T06:33:09.726Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2362
File: src/components/TagActions/TagActions.test.tsx:251-274
Timestamp: 2024-10-28T06:33:09.726Z
Learning: In `TagActions.test.tsx`, negative test cases for tag operations can be deferred and added later if necessary, according to the team's plan.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-10-08T16:13:41.996Z
Learnt from: Doraemon012
Repo: PalisadoesFoundation/talawa-admin PR: 1988
File: src/screens/MemberDetail/MemberDetail.test.tsx:170-195
Timestamp: 2024-10-08T16:13:41.996Z
Learning: In unit tests for this project, direct `click()` calls are acceptable; avoid suggesting replacing them with `userEvent.click()`.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-11-02T07:48:36.443Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2398
File: src/components/AddPeopleToTag/AddPeopleToTag.test.tsx:177-241
Timestamp: 2024-11-02T07:48:36.443Z
Learning: In `src/components/AddPeopleToTag/AddPeopleToTag.test.tsx`, prefer keeping test cases separate and more readable, even if it involves some duplication, instead of extracting common logic into helper functions.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-10-30T11:57:55.067Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2387
File: src/components/InfiniteScrollLoader/InfiniteScrollLoader.test.tsx:5-14
Timestamp: 2024-10-30T11:57:55.067Z
Learning: Currently, the developer considers the existing test coverage for the `InfiniteScrollLoader` component sufficient and prefers not to expand it at this time.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-11-01T12:54:20.857Z
Learnt from: GlenDsza
Repo: PalisadoesFoundation/talawa-admin PR: 2397
File: src/screens/OrganizationActionItems/testObject.mocks.ts:184-402
Timestamp: 2024-11-01T12:54:20.857Z
Learning: In `src/screens/OrganizationActionItems/testObject.mocks.ts`, test failures are not dependent on the `createdAt` fields; hardcoded dates in `createdAt` fields do not cause test failures in this file.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-10-25T19:31:37.405Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2355
File: src/screens/ManageTag/ManageTagMocks.ts:187-269
Timestamp: 2024-10-25T19:31:37.405Z
Learning: In `src/screens/ManageTag/ManageTagMocks.ts`, when mocking data for `USER_TAGS_ASSIGNED_MEMBERS` and `USER_TAGS_MEMBERS_TO_ASSIGN_TO`, it's acceptable for user IDs to overlap because the queries serve different purposes and the overlapping IDs can represent realistic scenarios in tests.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-11-06T05:15:51.829Z
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-06T05:15:51.829Z
Learning: In talawa-admin PR #4565, test sharding implementation achieved 2x speedup (8min → 4min) with conservative settings (maxConcurrency: 1, concurrent: false, maxThreads: 2 in CI) due to test isolation issues across 269 test files. These settings prevent OOM and race conditions. Higher speedup (3-4x) is achievable but requires systematic test isolation improvements. Apollo Client addTypename={false} deprecation warnings (142 files) are suppressed with TODO for follow-up fixes.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-04-20T06:41:55.660Z
Learnt from: bandhan-majumder
Repo: PalisadoesFoundation/talawa-admin PR: 3926
File: src/components/Advertisements/Advertisements.spec.tsx:316-327
Timestamp: 2025-04-20T06:41:55.660Z
Learning: In the Talawa Admin project's test files, button click events may trigger asynchronous operations that require awaiting the act() call, even when using fireEvent.click() which is typically synchronous.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-07-11T20:14:07.922Z
Learnt from: syedali237
Repo: PalisadoesFoundation/talawa-admin PR: 3988
File: cypress/pageObjects/AdminPortal/AdminDashboard.ts:4-5
Timestamp: 2025-07-11T20:14:07.922Z
Learning: In the talawa-admin project, mixing `data-cy` and `data-testid` attributes in Cypress selectors may be necessary due to technical constraints where UI library components have built-in `data-testid` attributes but don't support adding custom `data-cy` attributes.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-07-12T19:56:14.106Z
Learnt from: syedali237
Repo: PalisadoesFoundation/talawa-admin PR: 3988
File: cypress/support/commands.ts:42-46
Timestamp: 2025-07-12T19:56:14.106Z
Learning: In the talawa-admin project, the toast notification component is a built-in component that doesn't support adding custom data-cy attributes. When testing toast messages in Cypress, use the `[role=alert]` selector combined with `contain.text` assertions to verify the expected message content, which works correctly even when multiple toasts are displayed simultaneously.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-10-30T15:46:05.784Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2387
File: src/components/AddPeopleToTag/AddPeopleToTag.tsx:78-104
Timestamp: 2024-10-30T15:46:05.784Z
Learning: In `src/components/AddPeopleToTag/AddPeopleToTag.tsx`, and similar components, the team prefers to keep the current implementation of the `updateQuery` logic in infinite scroll functionality consistent across all screens.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-11-02T07:39:51.950Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2398
File: src/screens/ManageTag/ManageTag.tsx:108-0
Timestamp: 2024-11-02T07:39:51.950Z
Learning: In `src/screens/ManageTag/ManageTag.tsx`, when `assignedMemberSearchFirstName` or `assignedMemberSearchLastName` are empty strings, the query in the `useQuery` for `USER_TAGS_ASSIGNED_MEMBERS` intentionally includes filters with empty strings to match all entries.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-12-02T04:20:11.745Z
Learnt from: bitbard3
Repo: PalisadoesFoundation/talawa-admin PR: 2588
File: src/components/ChangeLanguageDropdown/ChangeLanguageDropdown.spec.tsx:145-155
Timestamp: 2024-12-02T04:20:11.745Z
Learning: In PRs focused solely on refactoring test cases from Jest to Vitest, avoid suggesting optimizations or changes outside the migration scope.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-11-01T16:18:01.545Z
Learnt from: GlenDsza
Repo: PalisadoesFoundation/talawa-admin PR: 2397
File: src/screens/UserPortal/Volunteer/Actions/Actions.tsx:367-374
Timestamp: 2024-11-01T16:18:01.545Z
Learning: In the `src/screens/UserPortal/Volunteer/Actions/Actions.tsx` file, the search button intentionally includes `tabIndex={-1}`. This is acceptable for our application, and future reviews should not flag this as an accessibility concern.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-11-11T07:47:39.266Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2425
File: src/screens/MemberDetail/MemberDetail.test.tsx:100-100
Timestamp: 2024-11-11T07:47:39.266Z
Learning: In `src/screens/MemberDetail/MemberDetail.test.tsx`, using `await wait();` is acceptable to wait for the render to complete.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-01-15T05:39:30.480Z
Learnt from: arpit-chakraborty
Repo: PalisadoesFoundation/talawa-admin PR: 3158
File: src/screens/OrganizationTags/OrganizationTagsMocks.ts:384-524
Timestamp: 2025-01-15T05:39:30.480Z
Learning: In OrganizationTagsMocks.ts, MOCKS_NULL_END_CURSOR and MOCKS_NO_MORE_PAGES are designed to test UI handling of edge cases where pagination data is inconsistent (e.g., hasNextPage is true but endCursor is null, or next page returns undefined data).

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
🧬 Code graph analysis (1)
src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx (3)
src/GraphQl/Queries/Queries.ts (3)
  • EVENT_ATTENDEES (316-334)
  • MEMBERS_LIST (808-820)
  • EVENT_DETAILS (248-285)
src/state/store.ts (1)
  • store (4-6)
src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.tsx (1)
  • EventRegistrantsModal (65-209)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: Generate and Validate Documentation
  • GitHub Check: Check Python Code Style
  • GitHub Check: Analyse Code With CodeQL (javascript)
🔇 Additional comments (6)
src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx (6)

1-21: LGTM!

Imports are well-organized with proper type imports for Apollo mocking. The GraphQL query/mutation imports align with what's needed for the test coverage.


23-89: LGTM!

Both mock components are well-structured with proper type="button" attributes, conditional rendering based on show, and expose necessary props via data-testid for assertions. The InviteByEmailModal mock correctly handles the optional onInvitesSent callback.


91-98: LGTM!

The ApolloMock type alias improves readability, and defaultProps.handleClose is correctly a no-op rather than a module-level vi.fn(), which aligns with Phase 2A mock isolation guidelines.


242-259: LGTM!

The renderWithProviders helper is clean and reduces boilerplate effectively. The addTypename prop is correctly omitted per project conventions, and all necessary providers are properly nested.


261-441: LGTM!

Test cases are well-structured with:

  • Proper test isolation using per-test vi.fn() for handleClose
  • Clear descriptions matching what's being tested
  • Appropriate use of queryByLabelText for MUI Autocomplete (per learnings)
  • The duplicate makeAttendeesEmptyMock() at line 406 correctly accounts for the refetch after reloadMembers

443-514: LGTM!

The invite modal tests properly validate the eventId and isRecurring props for both non-recurring and recurring events. The "Unknown User" fallback test correctly exercises the getOptionLabel fallback path using findByText for the async autocomplete options.

@codecov
Copy link
Copy Markdown

codecov Bot commented Nov 27, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.30%. Comparing base (2d0bfba) to head (0f46919).
⚠️ Report is 12 commits behind head on develop.

Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #4865      +/-   ##
===========================================
+ Coverage    94.26%   94.30%   +0.03%     
===========================================
  Files          388      388              
  Lines        15055    15055              
  Branches      4525     4452      -73     
===========================================
+ Hits         14192    14198       +6     
+ Misses         828      822       -6     
  Partials        35       35              
Flag Coverage Δ
vitest 94.30% <ø> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 275f885 and 0f46919.

📒 Files selected for processing (1)
  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx (4 hunks)
🧰 Additional context used
🧠 Learnings (42)
📓 Common learnings
Learnt from: Chaitanya1672
Repo: PalisadoesFoundation/talawa-admin PR: 2049
File: src/screens/OrganizationActionItems/ActionItemUpdateModal.tsx:112-138
Timestamp: 2024-10-08T16:13:41.996Z
Learning: The `istanbul ignore next` comments in the `ActionItemUpdateModal.tsx` file were added as part of a commit that introduced tests for the `ActionItemUpdateModal` component. Removing these comments and writing tests to cover the previously ignored lines is recommended to ensure code integrity and improve test coverage.
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-12T00:28:53.713Z
Learning: In talawa-admin PR #4565 continuation (PR #4664 planned), Phase 2A mock isolation strategy uses global vi.clearAllMocks() in afterEach (vitest.setup.ts) plus refactoring module-level vi.fn() into per-test beforeEach blocks across 6 parallelizable issues (2A.0 foundation, 2A.1-2A.4 directory-based fixes, 2A.5 validation). This approach addresses mock call history accumulation enabling maxConcurrency: 2 and 2.3-2.5x speedup. vi.restoreAllMocks() alternative considered for spy restoration during validation phase. Phase 2A (mocks) correctly separated from Phase 2B (DOM/Apollo).
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-11T11:51:09.236Z
Learning: In talawa-admin PR #4664 (continuation of PR #4565 sharding work), global mock cleanup was implemented via vi.clearAllMocks() in vitest.setup.ts afterEach, along with Apollo Client warning suppression (temporary, pending follow-up PR) and test suite refactoring to per-test StaticMockLink instances. This test isolation strategy addresses mock state leakage that forced maxConcurrency: 1 in PR #4565, enabling future parallel test execution improvements and 3-4x speedup potential.
Learnt from: palisadoes
Repo: PalisadoesFoundation/talawa-admin PR: 4718
File: src/components/EventManagement/Dashboard/EventDashboard.mocks.ts:83-114
Timestamp: 2025-11-21T12:42:24.884Z
Learning: In talawa-admin mock files (e.g., EventDashboard.mocks.ts), mock constant names must accurately reflect what they test. Mock names suggesting role-based logic (e.g., MOCKS_WITH_ADMIN_ROLE) are misleading when the component derives role from localStorage rather than mock data. Name mocks based on their distinguishing data features (e.g., MOCKS_WITH_SINGLE_ATTENDEE) or test context (e.g., MOCKS_FOR_ADMIN_STORAGE_TEST).
Learnt from: Jashan32
Repo: PalisadoesFoundation/talawa-admin PR: 4524
File: src/screens/OrganizationDashboard/OrganizationDashboardMocks.ts:0-0
Timestamp: 2025-10-22T22:00:53.943Z
Learning: In src/screens/OrganizationDashboard/OrganizationDashboardMocks.ts (and similar mock files), avoid duplicating identical Apollo MockedProvider mocks for repeated query consumption. Prefer adding `maxUsageCount` to the existing mock or using `newData` for reusable responses to keep tests deterministic and reduce drift.
Learnt from: IITI-tushar
Repo: PalisadoesFoundation/talawa-admin PR: 3400
File: src/screens/UserPortal/Organizations/Organizations.spec.tsx:19-19
Timestamp: 2025-01-26T12:32:45.867Z
Learning: In React test files, avoid using React hooks outside component scope (including in static objects like mock data). Instead, initialize hooks inside describe blocks or extract the needed functionality without using hooks.
Learnt from: bandhan-majumder
Repo: PalisadoesFoundation/talawa-admin PR: 3926
File: src/components/Advertisements/core/AdvertisementRegister/AdvertisementRegister.spec.tsx:403-421
Timestamp: 2025-04-20T06:45:57.175Z
Learning: In the talawa-admin project, the Advertisement component tests (3 files) use both ApolloProvider and MockedProvider together, though it's not a widespread pattern in the codebase. The maintainer has confirmed this approach is needed for these specific tests.
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-13T18:07:48.621Z
Learning: In talawa-admin, Apollo Client pinned to 3.11.10 (not 3.14.0) to avoid deprecation warnings during test isolation work (PR #4565 Phase 2A-2B). Apollo 3.14.0's MockedProvider internally uses deprecated options causing console noise that interferes with debugging. Upgrade to 4.x blocked by dependency conflicts with apollo-upload-client and apollo/link-error. All addTypename props removed from 115+ test files for future compatibility. Will upgrade when dependencies support Apollo 4.x.
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2398
File: src/components/AddPeopleToTag/AddPeopleToTag.test.tsx:177-241
Timestamp: 2024-11-02T07:48:36.443Z
Learning: In `src/components/AddPeopleToTag/AddPeopleToTag.test.tsx`, prefer keeping test cases separate and more readable, even if it involves some duplication, instead of extracting common logic into helper functions.
Learnt from: IITI-tushar
Repo: PalisadoesFoundation/talawa-admin PR: 2718
File: src/screens/UserPortal/Settings/Settings.spec.tsx:0-0
Timestamp: 2024-12-22T17:58:17.818Z
Learning: The matchMedia mock implementation in `Settings.spec.tsx` no longer includes the deprecated addListener and removeListener methods, opting solely for addEventListener and removeEventListener.
📚 Learning: 2025-11-21T12:42:24.884Z
Learnt from: palisadoes
Repo: PalisadoesFoundation/talawa-admin PR: 4718
File: src/components/EventManagement/Dashboard/EventDashboard.mocks.ts:83-114
Timestamp: 2025-11-21T12:42:24.884Z
Learning: In talawa-admin mock files (e.g., EventDashboard.mocks.ts), mock constant names must accurately reflect what they test. Mock names suggesting role-based logic (e.g., MOCKS_WITH_ADMIN_ROLE) are misleading when the component derives role from localStorage rather than mock data. Name mocks based on their distinguishing data features (e.g., MOCKS_WITH_SINGLE_ATTENDEE) or test context (e.g., MOCKS_FOR_ADMIN_STORAGE_TEST).

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-10-08T16:13:41.996Z
Learnt from: Chaitanya1672
Repo: PalisadoesFoundation/talawa-admin PR: 2049
File: src/screens/OrganizationActionItems/ActionItemUpdateModal.tsx:112-138
Timestamp: 2024-10-08T16:13:41.996Z
Learning: The `istanbul ignore next` comments in the `ActionItemUpdateModal.tsx` file were added as part of a commit that introduced tests for the `ActionItemUpdateModal` component. Removing these comments and writing tests to cover the previously ignored lines is recommended to ensure code integrity and improve test coverage.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-11-27T11:40:30.717Z
Learnt from: rawadhossain
Repo: PalisadoesFoundation/talawa-admin PR: 4865
File: src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx:261-280
Timestamp: 2025-11-27T11:40:30.717Z
Learning: In Talawa Admin tests (e.g., src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx), react-bootstrap Modal header close buttons don't support custom test IDs, so using getAllByRole('button', { name: /close/i })[0] to select the modal's primary close action is acceptable and stable, as the Modal component consistently exposes "Close" as the accessible label.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-12-22T17:58:17.818Z
Learnt from: IITI-tushar
Repo: PalisadoesFoundation/talawa-admin PR: 2718
File: src/screens/UserPortal/Settings/Settings.spec.tsx:0-0
Timestamp: 2024-12-22T17:58:17.818Z
Learning: The matchMedia mock implementation in `Settings.spec.tsx` no longer includes the deprecated addListener and removeListener methods, opting solely for addEventListener and removeEventListener.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-11-12T00:28:53.713Z
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-12T00:28:53.713Z
Learning: In talawa-admin PR #4565 continuation (PR #4664 planned), Phase 2A mock isolation strategy uses global vi.clearAllMocks() in afterEach (vitest.setup.ts) plus refactoring module-level vi.fn() into per-test beforeEach blocks across 6 parallelizable issues (2A.0 foundation, 2A.1-2A.4 directory-based fixes, 2A.5 validation). This approach addresses mock call history accumulation enabling maxConcurrency: 2 and 2.3-2.5x speedup. vi.restoreAllMocks() alternative considered for spy restoration during validation phase. Phase 2A (mocks) correctly separated from Phase 2B (DOM/Apollo).

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-10-30T12:01:40.366Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2387
File: src/screens/ManageTag/ManageTagMockComponents/MockAddPeopleToTag.tsx:1-28
Timestamp: 2024-10-30T12:01:40.366Z
Learning: In the `MockAddPeopleToTag` component in `src/screens/ManageTag/ManageTagMockComponents/MockAddPeopleToTag.tsx`, it's acceptable to implement only the necessary props from `InterfaceAddPeopleToTagProps` and omit others like `refetchAssignedMembersData`, `t`, and `tCommon` that are tested separately.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-10-22T22:00:53.943Z
Learnt from: Jashan32
Repo: PalisadoesFoundation/talawa-admin PR: 4524
File: src/screens/OrganizationDashboard/OrganizationDashboardMocks.ts:0-0
Timestamp: 2025-10-22T22:00:53.943Z
Learning: In src/screens/OrganizationDashboard/OrganizationDashboardMocks.ts (and similar mock files), avoid duplicating identical Apollo MockedProvider mocks for repeated query consumption. Prefer adding `maxUsageCount` to the existing mock or using `newData` for reusable responses to keep tests deterministic and reduce drift.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-11-11T11:51:09.236Z
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-11T11:51:09.236Z
Learning: In talawa-admin PR #4664 (continuation of PR #4565 sharding work), global mock cleanup was implemented via vi.clearAllMocks() in vitest.setup.ts afterEach, along with Apollo Client warning suppression (temporary, pending follow-up PR) and test suite refactoring to per-test StaticMockLink instances. This test isolation strategy addresses mock state leakage that forced maxConcurrency: 1 in PR #4565, enabling future parallel test execution improvements and 3-4x speedup potential.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-11-27T11:41:54.834Z
Learnt from: rawadhossain
Repo: PalisadoesFoundation/talawa-admin PR: 4865
File: src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx:302-328
Timestamp: 2025-11-27T11:41:54.834Z
Learning: In Talawa Admin tests (e.g., src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx), using queryByLabelText with an HTMLElement cast for MUI Autocomplete inputs is acceptable because the Autocomplete input can mount asynchronously and isn't always available for strict getBy* queries at initial render. This pattern is stable for MUI Autocomplete components.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-12-02T04:20:11.745Z
Learnt from: bitbard3
Repo: PalisadoesFoundation/talawa-admin PR: 2588
File: src/components/ChangeLanguageDropdown/ChangeLanguageDropdown.spec.tsx:145-155
Timestamp: 2024-12-02T04:20:11.745Z
Learning: In PRs focused solely on refactoring test cases from Jest to Vitest, avoid suggesting optimizations or changes outside the migration scope.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-02-09T06:22:23.028Z
Learnt from: adithyanotfound
Repo: PalisadoesFoundation/talawa-admin PR: 3569
File: src/screens/UserPortal/Settings/Settings.spec.tsx:314-316
Timestamp: 2025-02-09T06:22:23.028Z
Learning: In the Settings component's tests, `fireEvent.change` should be used instead of `userEvent.type` for the address input field, as `userEvent` doesn't work correctly in this case.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-08-13T06:52:48.055Z
Learnt from: syedali237
Repo: PalisadoesFoundation/talawa-admin PR: 4040
File: cypress/pageObjects/AdminPortal/PeoplePage.ts:30-34
Timestamp: 2025-08-13T06:52:48.055Z
Learning: In the talawa-admin project's Cypress tests, specifically in cypress/pageObjects/AdminPortal/PeoplePage.ts, the element '[data-testid="existingUser"]' is a toggle control that requires .trigger('click') instead of .click() because it's not a standard button but a custom UI component that needs direct event triggering.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-11-02T07:31:50.788Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2398
File: src/components/TagActions/TagActions.tsx:216-0
Timestamp: 2024-11-02T07:31:50.788Z
Learning: In `src/components/TagActions/TagActions.tsx`, the submit button should not be disabled when no tags are selected, as per the design preference.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-11-01T13:26:46.088Z
Learnt from: GlenDsza
Repo: PalisadoesFoundation/talawa-admin PR: 2397
File: src/screens/UserPortal/Volunteer/Actions/Actions.mocks.ts:3-119
Timestamp: 2024-11-01T13:26:46.088Z
Learning: In `src/screens/UserPortal/Volunteer/Actions/Actions.mocks.ts`, the `dueDate` fields in mock data do not determine any test process status, so using future dates is acceptable.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-11-17T22:18:09.680Z
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-17T22:18:09.680Z
Learning: Talawa Admin Phase 2A testing guideline: Allow vi.hoisted() + vi.mock() module-level mocks for shared dependencies; prefer afterEach(() => vi.clearAllMocks()) as default cleanup. Use afterEach(() => vi.restoreAllMocks()) only in suites that create vi.spyOn spies or patch real implementations. Avoid vi.resetAllMocks() globally. The generic “no module-level mocks” rule is updated to “no module-level vi.fn except vi.hoisted module mocks.”

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-11-13T18:07:48.621Z
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-13T18:07:48.621Z
Learning: In talawa-admin, Apollo Client pinned to 3.11.10 (not 3.14.0) to avoid deprecation warnings during test isolation work (PR #4565 Phase 2A-2B). Apollo 3.14.0's MockedProvider internally uses deprecated options causing console noise that interferes with debugging. Upgrade to 4.x blocked by dependency conflicts with apollo-upload-client and apollo/link-error. All addTypename props removed from 115+ test files for future compatibility. Will upgrade when dependencies support Apollo 4.x.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-03-11T17:45:54.621Z
Learnt from: PurnenduMIshra129th
Repo: PalisadoesFoundation/talawa-admin PR: 3814
File: src/components/UserPortal/OrganizationNavbar/OrganizationNavbar.spec.tsx:137-146
Timestamp: 2025-03-11T17:45:54.621Z
Learning: In OrganizationNavbar.spec.tsx, separate vi.mock implementations for react-router-dom are needed to avoid errors - one for useNavigate and another for useParams.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-04-20T06:45:57.175Z
Learnt from: bandhan-majumder
Repo: PalisadoesFoundation/talawa-admin PR: 3926
File: src/components/Advertisements/core/AdvertisementRegister/AdvertisementRegister.spec.tsx:403-421
Timestamp: 2025-04-20T06:45:57.175Z
Learning: In the talawa-admin project, the Advertisement component tests (3 files) use both ApolloProvider and MockedProvider together, though it's not a widespread pattern in the codebase. The maintainer has confirmed this approach is needed for these specific tests.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-04-20T06:45:57.175Z
Learnt from: bandhan-majumder
Repo: PalisadoesFoundation/talawa-admin PR: 3926
File: src/components/Advertisements/core/AdvertisementRegister/AdvertisementRegister.spec.tsx:403-421
Timestamp: 2025-04-20T06:45:57.175Z
Learning: Using both ApolloProvider and MockedProvider together in tests is an established pattern in this codebase, even though it's technically redundant from Apollo Client's best practices perspective.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-01-26T12:32:45.867Z
Learnt from: IITI-tushar
Repo: PalisadoesFoundation/talawa-admin PR: 3400
File: src/screens/UserPortal/Organizations/Organizations.spec.tsx:19-19
Timestamp: 2025-01-26T12:32:45.867Z
Learning: In React test files, avoid using React hooks outside component scope (including in static objects like mock data). Instead, initialize hooks inside describe blocks or extract the needed functionality without using hooks.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-10-22T22:22:27.696Z
Learnt from: Jashan32
Repo: PalisadoesFoundation/talawa-admin PR: 4524
File: src/screens/Requests/Requests.spec.tsx:0-0
Timestamp: 2025-10-22T22:22:27.696Z
Learning: In talawa-admin tests using react-infinite-scroll-component (e.g., src/screens/Requests/Requests.spec.tsx), jsdom scroll is flaky. Prefer a resilient approach: try querying the container via document.querySelector('[data-testid="infinite-scroll-component"]') and fall back to window scroll if missing. Strengthen assertions by checking for page-2 items (e.g., "User9 Test") to ensure fetchMore actually ran instead of relying only on row counts.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-02-20T13:35:01.218Z
Learnt from: syedali237
Repo: PalisadoesFoundation/talawa-admin PR: 3712
File: src/components/EventCalender/Yearly/YearlyEventCalender.spec.tsx:113-127
Timestamp: 2025-02-20T13:35:01.218Z
Learning: In React component tests, when testing window resize event handling, it's acceptable to only verify that the event is properly triggered without assertions if the test's focus is specifically on event handling rather than responsive behavior. Testing the actual responsive rendering would be a separate test case.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-11-01T16:34:10.347Z
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-01T16:34:10.347Z
Learning: In talawa-admin parallel test sharding (PR #4565), Bootstrap modals render via portals to document.body, causing screen.getByRole('dialog') to find dialogs from ALL concurrent test shards. Solution: use unique data-testid per modal instance and query within that scope using within() helper, or use findAllByTestId and take last element (less robust, timing-dependent).

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-10-28T06:38:43.765Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2362
File: src/components/TagActions/TagActions.test.tsx:123-131
Timestamp: 2024-10-28T06:38:43.765Z
Learning: In `TagActions.test.tsx`, `link2` is the error link used to simulate errors, so the existing test cases sufficiently cover error handling.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-10-28T06:33:09.726Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2362
File: src/components/TagActions/TagActions.test.tsx:251-274
Timestamp: 2024-10-28T06:33:09.726Z
Learning: In `TagActions.test.tsx`, negative test cases for tag operations can be deferred and added later if necessary, according to the team's plan.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-10-08T16:13:41.996Z
Learnt from: Doraemon012
Repo: PalisadoesFoundation/talawa-admin PR: 1988
File: src/screens/MemberDetail/MemberDetail.test.tsx:170-195
Timestamp: 2024-10-08T16:13:41.996Z
Learning: In unit tests for this project, direct `click()` calls are acceptable; avoid suggesting replacing them with `userEvent.click()`.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-11-02T07:48:36.443Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2398
File: src/components/AddPeopleToTag/AddPeopleToTag.test.tsx:177-241
Timestamp: 2024-11-02T07:48:36.443Z
Learning: In `src/components/AddPeopleToTag/AddPeopleToTag.test.tsx`, prefer keeping test cases separate and more readable, even if it involves some duplication, instead of extracting common logic into helper functions.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-10-30T11:57:55.067Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2387
File: src/components/InfiniteScrollLoader/InfiniteScrollLoader.test.tsx:5-14
Timestamp: 2024-10-30T11:57:55.067Z
Learning: Currently, the developer considers the existing test coverage for the `InfiniteScrollLoader` component sufficient and prefers not to expand it at this time.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-11-01T12:54:20.857Z
Learnt from: GlenDsza
Repo: PalisadoesFoundation/talawa-admin PR: 2397
File: src/screens/OrganizationActionItems/testObject.mocks.ts:184-402
Timestamp: 2024-11-01T12:54:20.857Z
Learning: In `src/screens/OrganizationActionItems/testObject.mocks.ts`, test failures are not dependent on the `createdAt` fields; hardcoded dates in `createdAt` fields do not cause test failures in this file.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-10-25T19:31:37.405Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2355
File: src/screens/ManageTag/ManageTagMocks.ts:187-269
Timestamp: 2024-10-25T19:31:37.405Z
Learning: In `src/screens/ManageTag/ManageTagMocks.ts`, when mocking data for `USER_TAGS_ASSIGNED_MEMBERS` and `USER_TAGS_MEMBERS_TO_ASSIGN_TO`, it's acceptable for user IDs to overlap because the queries serve different purposes and the overlapping IDs can represent realistic scenarios in tests.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-11-06T05:15:51.829Z
Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-06T05:15:51.829Z
Learning: In talawa-admin PR #4565, test sharding implementation achieved 2x speedup (8min → 4min) with conservative settings (maxConcurrency: 1, concurrent: false, maxThreads: 2 in CI) due to test isolation issues across 269 test files. These settings prevent OOM and race conditions. Higher speedup (3-4x) is achievable but requires systematic test isolation improvements. Apollo Client addTypename={false} deprecation warnings (142 files) are suppressed with TODO for follow-up fixes.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-04-20T06:41:55.660Z
Learnt from: bandhan-majumder
Repo: PalisadoesFoundation/talawa-admin PR: 3926
File: src/components/Advertisements/Advertisements.spec.tsx:316-327
Timestamp: 2025-04-20T06:41:55.660Z
Learning: In the Talawa Admin project's test files, button click events may trigger asynchronous operations that require awaiting the act() call, even when using fireEvent.click() which is typically synchronous.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-07-11T20:14:07.922Z
Learnt from: syedali237
Repo: PalisadoesFoundation/talawa-admin PR: 3988
File: cypress/pageObjects/AdminPortal/AdminDashboard.ts:4-5
Timestamp: 2025-07-11T20:14:07.922Z
Learning: In the talawa-admin project, mixing `data-cy` and `data-testid` attributes in Cypress selectors may be necessary due to technical constraints where UI library components have built-in `data-testid` attributes but don't support adding custom `data-cy` attributes.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-07-12T19:56:14.106Z
Learnt from: syedali237
Repo: PalisadoesFoundation/talawa-admin PR: 3988
File: cypress/support/commands.ts:42-46
Timestamp: 2025-07-12T19:56:14.106Z
Learning: In the talawa-admin project, the toast notification component is a built-in component that doesn't support adding custom data-cy attributes. When testing toast messages in Cypress, use the `[role=alert]` selector combined with `contain.text` assertions to verify the expected message content, which works correctly even when multiple toasts are displayed simultaneously.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-10-30T15:46:05.784Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2387
File: src/components/AddPeopleToTag/AddPeopleToTag.tsx:78-104
Timestamp: 2024-10-30T15:46:05.784Z
Learning: In `src/components/AddPeopleToTag/AddPeopleToTag.tsx`, and similar components, the team prefers to keep the current implementation of the `updateQuery` logic in infinite scroll functionality consistent across all screens.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-11-02T07:39:51.950Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2398
File: src/screens/ManageTag/ManageTag.tsx:108-0
Timestamp: 2024-11-02T07:39:51.950Z
Learning: In `src/screens/ManageTag/ManageTag.tsx`, when `assignedMemberSearchFirstName` or `assignedMemberSearchLastName` are empty strings, the query in the `useQuery` for `USER_TAGS_ASSIGNED_MEMBERS` intentionally includes filters with empty strings to match all entries.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-11-01T16:18:01.545Z
Learnt from: GlenDsza
Repo: PalisadoesFoundation/talawa-admin PR: 2397
File: src/screens/UserPortal/Volunteer/Actions/Actions.tsx:367-374
Timestamp: 2024-11-01T16:18:01.545Z
Learning: In the `src/screens/UserPortal/Volunteer/Actions/Actions.tsx` file, the search button intentionally includes `tabIndex={-1}`. This is acceptable for our application, and future reviews should not flag this as an accessibility concern.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-01-23T14:03:01.877Z
Learnt from: varshith257
Repo: PalisadoesFoundation/talawa-admin PR: 3392
File: schema.graphql:485-487
Timestamp: 2025-01-23T14:03:01.877Z
Learning: Use EmailAddress scalar type instead of String for email fields in GraphQL schema to ensure proper email validation.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-08-11T07:35:33.735Z
Learnt from: Jashan32
Repo: PalisadoesFoundation/talawa-admin PR: 4073
File: src/components/Venues/VenueCardMocks.ts:4-10
Timestamp: 2025-08-11T07:35:33.735Z
Learning: In the Talawa Admin project, the capacity field is included in venue mock data and UI components (VenueCard.tsx, VenueCardMocks.ts) but is not actually returned by the VENUE_LIST query from the backend. This creates a temporary mismatch where the UI expects capacity but the API doesn't provide it. The field will be added back once the backend API is updated.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2024-11-11T07:47:39.266Z
Learnt from: meetulr
Repo: PalisadoesFoundation/talawa-admin PR: 2425
File: src/screens/MemberDetail/MemberDetail.test.tsx:100-100
Timestamp: 2024-11-11T07:47:39.266Z
Learning: In `src/screens/MemberDetail/MemberDetail.test.tsx`, using `await wait();` is acceptable to wait for the render to complete.

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
📚 Learning: 2025-01-15T05:39:30.480Z
Learnt from: arpit-chakraborty
Repo: PalisadoesFoundation/talawa-admin PR: 3158
File: src/screens/OrganizationTags/OrganizationTagsMocks.ts:384-524
Timestamp: 2025-01-15T05:39:30.480Z
Learning: In OrganizationTagsMocks.ts, MOCKS_NULL_END_CURSOR and MOCKS_NO_MORE_PAGES are designed to test UI handling of edge cases where pagination data is inconsistent (e.g., hasNextPage is true but endCursor is null, or next page returns undefined data).

Applied to files:

  • src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: Check Python Code Style
  • GitHub Check: Generate and Validate Documentation
  • GitHub Check: Analyse Code With CodeQL (javascript)
🔇 Additional comments (7)
src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx (7)

1-22: LGTM!

Clean import organization with proper type import for MockedResponse and explicit GraphQL query/mutation imports.


23-52: LGTM!

AddOnSpotAttendee mock correctly includes type="button" on both buttons and exposes the necessary callbacks for testing modal interactions.


54-89: LGTM!

InviteByEmailModal mock properly exposes eventId and isRecurring for test assertions, includes type="button" on buttons, and conditionally renders the Send Invites button based on onInvitesSent presence.


91-98: LGTM!

Good pattern: defaultProps.handleClose is a no-op function rather than a module-level vi.fn(), aligning with Phase 2A mock isolation strategy. Tests that need to assert calls (like line 276) correctly create their own spy.


100-240: LGTM!

Well-structured mock factories with accurate naming that reflects data characteristics. Schema alignment is correct:

  • emailAddress field used consistently (not email)
  • recurrenceRule is an object with id property matching the query shape
  • Separate mutation mocks for recurring (recurringEventInstanceId) vs non-recurring (eventId) events

242-259: LGTM!

Clean test wrapper helper with proper provider nesting. Correctly omits addTypename={false} to align with Apollo upgrade preparation.


261-514: Comprehensive test coverage achieved.

The test suite effectively covers:

  • Modal rendering and basic elements
  • Close button behavior with proper spy assertion
  • Warning state when no member selected
  • Add registrant success/error paths for both non-recurring and recurring events (exercising isRecurring branch and addVariables construction)
  • InviteByEmailModal open/close flow with eventId and isRecurring verification
  • onInvitesSent callback pathway (coverage-only, as acknowledged)
  • getOptionLabel fallback to "Unknown User" for empty member names
  • AddOnSpotAttendee modal interactions including reloadMembers callback

This aligns well with the PR objective of achieving 100% coverage for the target file.

@palisadoes palisadoes added the ignore-sensitive-files-pr The contributor has a legitimate reason for editiing protected files label Nov 27, 2025
@palisadoes
Copy link
Copy Markdown
Contributor

@coderabbitai full review and reevaluate all resolved items. If the PR requires any changes, even trivial ones, then give your review a “requested changes” status. If no changes are required then give the PR an “approved” status.

Please ensure code rabbit approves your changes, even the trivial ones

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Nov 27, 2025

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Get PR details and list of changed files
gh pr view 4865 --json title,body,state,files,comments,reviews --repo PalisadoesFoundation/talawa-admin

Length of output: 167237


🏁 Script executed:

#!/bin/bash
# Get the diff for all changed files in the PR
gh pr diff 4865 --repo PalisadoesFoundation/talawa-admin

Length of output: 33297


🏁 Script executed:

#!/bin/bash
# Get the component file being tested to check for istanbul ignore comments
cat src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.tsx

Length of output: 6870


🏁 Script executed:

#!/bin/bash
# Get the test file to review test quality
cat src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx

Length of output: 14198


🏁 Script executed:

#!/bin/bash
# Check if there are any istanbul ignore comments in the component file
rg -n "istanbul ignore" src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.tsx

Length of output: 0


🏁 Script executed:

#!/bin/bash
# List all review comment threads including resolved ones
gh pr view 4865 --json reviewThreads --jq '.reviewThreads[] | {resolved: .isResolved, comments: [.comments[] | {author: .author.login, body: .body, createdAt: .createdAt}]}' --repo PalisadoesFoundation/talawa-admin

Length of output: 674


🏁 Script executed:

#!/bin/bash
# Check the current test coverage for the component file
cat src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.tsx | wc -l

Length of output: 3


🏁 Script executed:

#!/bin/bash
# Verify the test file has no syntax issues and check line count
cat src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx | wc -l

Length of output: 3


🏁 Script executed:

#!/bin/bash
# Check for any TODO or FIXME comments in both files
rg -n "TODO|FIXME" src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.tsx src/components/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx

Length of output: 0


🏁 Script executed:

#!/bin/bash
# Get the latest review status details
gh pr view 4865 --json reviews --jq '.reviews[-5:] | .[] | {author: .author.login, state: .state, submittedAt: .submittedAt}' --repo PalisadoesFoundation/talawa-admin

Length of output: 429


🏁 Script executed:

#!/bin/bash
# Check if all CI checks are passing
gh pr checks 4865 --repo PalisadoesFoundation/talawa-admin

Length of output: 3517


@palisadoes, I have completed a comprehensive full review and re-evaluated all resolved items. Here is my assessment:

PR Status: APPROVED - No Changes Required

Coverage Achievement

The PR successfully achieves 100% test coverage for EventRegistrantsModal.tsx with comprehensive tests covering:

Core Functionality:

  • ✅ Modal rendering and UI elements
  • ✅ Close button behavior
  • ✅ Add registrant validation warnings
  • ✅ Success and error paths for mutations

Critical Branching Logic:

  • isRecurring branch: Tests verify both non-recurring (uses eventId) and recurring (uses recurringEventInstanceId) event flows
  • addVariables construction: Complete coverage of both variable paths
  • EVENT_DETAILS query: Both null and non-null recurrenceRule scenarios tested

Modal Interactions:

  • InviteByEmailModal: Open/close behavior with correct eventId and isRecurring prop validation
  • onInvitesSent callback: Exercised in test triggering attendeesRefetch()
  • AddOnSpotAttendee: Modal interactions and reloadMembers callback

Edge Cases:

  • getOptionLabel fallback: "Unknown User" branch when member name is empty
  • noOptionsText: Displayed correctly with empty member list

Code Quality

  • No istanbul ignore comments in the component file ✅
  • All previous review concerns addressed (type="button", emailAddress field) ✅
  • Follows Phase 2A test isolation patterns (no module-level vi.fn()) ✅
  • Well-structured factory mocks with descriptive names ✅

CI Status

  • 26/27 checks passing
  • Only failing check: "Check CodeRabbit Approval" (my approval)
  • All test shards, CodeCov, E2E, security, and code quality checks passing

Pre-commit Hook Fix

The check_pom.js update for glob v13 compatibility is appropriate and necessary for the PR to pass pre-commit checks.


Conclusion: This PR fully satisfies all acceptance criteria from issue #4849. The test coverage is comprehensive, valid, and achieves 100% for the target file. All code follows project conventions and quality standards.


🧠 Learnings used
Learnt from: Priyanshuthapliyal2005
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-01-30T10:03:22.905Z
Learning: CodeRabbit does not have permissions to add labels to PRs in the talawa-admin repository. Labels need to be added manually by users with appropriate permissions.

Learnt from: Chaitanya1672
Repo: PalisadoesFoundation/talawa-admin PR: 2049
File: src/screens/OrganizationActionItems/ActionItemUpdateModal.tsx:112-138
Timestamp: 2024-10-08T16:13:41.996Z
Learning: The `istanbul ignore next` comments in the `ActionItemUpdateModal.tsx` file were added as part of a commit that introduced tests for the `ActionItemUpdateModal` component. Removing these comments and writing tests to cover the previously ignored lines is recommended to ensure code integrity and improve test coverage.

Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-12T00:28:53.713Z
Learning: In talawa-admin PR #4565 continuation (PR #4664 planned), Phase 2A mock isolation strategy uses global vi.clearAllMocks() in afterEach (vitest.setup.ts) plus refactoring module-level vi.fn() into per-test beforeEach blocks across 6 parallelizable issues (2A.0 foundation, 2A.1-2A.4 directory-based fixes, 2A.5 validation). This approach addresses mock call history accumulation enabling maxConcurrency: 2 and 2.3-2.5x speedup. vi.restoreAllMocks() alternative considered for spy restoration during validation phase. Phase 2A (mocks) correctly separated from Phase 2B (DOM/Apollo).
✅ Actions performed

Comments resolved and changes approved.

@palisadoes
Copy link
Copy Markdown
Contributor

@coderabbitai why is our "Check CodeRabbit Approval" workflow in the .github/workflows/pull-request-review.yml file failing when you have approved the PR?

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Nov 27, 2025

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Get the workflow file to understand what it's checking
cat .github/workflows/pull-request-review.yml

Length of output: 1791


🏁 Script executed:

#!/bin/bash
# Get detailed review information for this PR
gh pr view 4865 --json reviews --jq '.reviews[] | select(.author.login == "coderabbitai[bot]") | {state: .state, submittedAt: .submittedAt, body: .body}' --repo PalisadoesFoundation/talawa-admin

Length of output: 0


🏁 Script executed:

#!/bin/bash
# Check the specific status of the CodeRabbit approval check
gh pr checks 4865 --repo PalisadoesFoundation/talawa-admin | grep -i "coderabbit"

Length of output: 164


🏁 Script executed:

#!/bin/bash
# Get all reviews to see what usernames exist
gh pr view 4865 --json reviews --jq '.reviews[] | {author: .author.login, state: .state, submittedAt: .submittedAt}' --repo PalisadoesFoundation/talawa-admin

Length of output: 1189


🏁 Script executed:

#!/bin/bash
# Check the workflow run logs for more details
gh run view 19740163358 --repo PalisadoesFoundation/talawa-admin --log | grep -A 10 -B 10 "CodeRabbit"

Length of output: 7331


🏁 Script executed:

#!/bin/bash
# Alternative: check if there are any reviews with "coderabbit" in the name (case insensitive)
gh pr view 4865 --json reviews --jq '.reviews[] | select(.author.login | ascii_downcase | contains("coderabbit"))' --repo PalisadoesFoundation/talawa-admin

Length of output: 149041


@palisadoes, I've identified the issue. The workflow is failing because it's checking the latest review by timestamp, and my most recent review is a COMMENTED review (submitted at 12:43:20Z), which came after my APPROVED review (12:43:01Z).

Here's the timeline:

  1. 12:43:01Z - I submitted an APPROVED review
  2. 💬 12:43:20Z - I submitted a COMMENTED review (responding to a comment thread)
  3. 14:51:44Z - The workflow ran and picked up the COMMENTED review as the latest, causing it to fail

The Problem:
The workflow's logic at lines 34-40 in .github/workflows/pull-request-review.yml sorts all reviews by date and checks if the latest one is APPROVED. However, COMMENTED reviews are valid review submissions that don't change approval status, but they do update the timestamp.

The Fix:
The workflow should filter for only decision-changing review states before checking the latest. Here's the corrected logic:

// Filter for decision-making reviews only (exclude COMMENTED)
const codeRabbitReviews = reviews.filter(review => 
  (review.user.login.toLowerCase().includes('coderabbit') || 
   review.user.login.toLowerCase().includes('coderabbitai')) &&
  review.state !== 'COMMENTED'
);

This ensures that only APPROVED, CHANGES_REQUESTED, or DISMISSED reviews are considered when determining the approval status.

Would you like me to create an issue to track this workflow fix?


🧠 Learnings used
Learnt from: palisadoes
Repo: PalisadoesFoundation/talawa-admin PR: 4550
File: .github/workflows/pull-request.yml:377-382
Timestamp: 2025-10-29T04:36:50.503Z
Learning: In the talawa-admin repository's .github/workflows/pull-request.yml, the Check-AutoDocs job is intentionally added as a dependency of Test-Application to create a sequential chain (Code-Quality-Checks → Check-AutoDocs → Test-Application), ensuring documentation validation must complete before tests run. This design is approved and should not be flagged as a CI latency concern.

Learnt from: Priyanshuthapliyal2005
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-01-30T10:03:22.905Z
Learning: CodeRabbit does not have permissions to add labels to PRs in the talawa-admin repository. Labels need to be added manually by users with appropriate permissions.

Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-12T00:28:53.713Z
Learning: In talawa-admin PR #4565 continuation (PR #4664 planned), Phase 2A mock isolation strategy uses global vi.clearAllMocks() in afterEach (vitest.setup.ts) plus refactoring module-level vi.fn() into per-test beforeEach blocks across 6 parallelizable issues (2A.0 foundation, 2A.1-2A.4 directory-based fixes, 2A.5 validation). This approach addresses mock call history accumulation enabling maxConcurrency: 2 and 2.3-2.5x speedup. vi.restoreAllMocks() alternative considered for spy restoration during validation phase. Phase 2A (mocks) correctly separated from Phase 2B (DOM/Apollo).

Learnt from: Chaitanya1672
Repo: PalisadoesFoundation/talawa-admin PR: 2049
File: src/screens/OrganizationActionItems/ActionItemUpdateModal.tsx:112-138
Timestamp: 2024-10-08T16:13:41.996Z
Learning: The `istanbul ignore next` comments in the `ActionItemUpdateModal.tsx` file were added as part of a commit that introduced tests for the `ActionItemUpdateModal` component. Removing these comments and writing tests to cover the previously ignored lines is recommended to ensure code integrity and improve test coverage.

Learnt from: syedali237
Repo: PalisadoesFoundation/talawa-admin PR: 4522
File: .github/workflows/pull-request.yml:768-775
Timestamp: 2025-10-22T18:08:21.451Z
Learning: In the talawa-admin repository, the ZAP security scan job in .github/workflows/pull-request.yml should depend on Code-Quality-Checks, Test-Application, Run-Cypress-Tests, Start-App-Without-Docker, and Docker-Start-Check to ensure security scanning only runs on stable code that passes all prerequisite checks, optimizing CI resource usage.

Learnt from: Priyanshuthapliyal2005
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-01-30T10:03:22.905Z
Learning: The 'ignore-sensitive-files-pr' label is required when making changes to sensitive files like package.json, package-lock.json, and workflow files in the talawa-admin repository.

Learnt from: Priyanshuthapliyal2005
Repo: PalisadoesFoundation/talawa-admin PR: 3485
File: .github/workflows/pull-request.yml:79-149
Timestamp: 2025-01-30T10:29:36.662Z
Learning: CodeRabbit bot does not have permissions to add labels in the talawa-admin repository. Label management requires repository maintainer intervention.

Learnt from: Ansingh0305
Repo: PalisadoesFoundation/talawa-admin PR: 0
File: :0-0
Timestamp: 2025-11-11T11:51:09.236Z
Learning: In talawa-admin PR #4664 (continuation of PR #4565 sharding work), global mock cleanup was implemented via vi.clearAllMocks() in vitest.setup.ts afterEach, along with Apollo Client warning suppression (temporary, pending follow-up PR) and test suite refactoring to per-test StaticMockLink instances. This test isolation strategy addresses mock state leakage that forced maxConcurrency: 1 in PR #4565, enabling future parallel test execution improvements and 3-4x speedup potential.

@rawadhossain
Copy link
Copy Markdown
Author

@palisadoes I think the failed CI issue has been fixed. Is there anything I need to do to pass the tests or get merged?

@palisadoes palisadoes merged commit 7c422a5 into PalisadoesFoundation:develop Nov 28, 2025
45 of 51 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ignore-sensitive-files-pr The contributor has a legitimate reason for editiing protected files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants