feat: add test to verify unpublished platform orgs are excluded from credit usage (#22567)
* feat: add test to verify unpublished platform orgs are excluded from credit usage - Add filtering logic in _getTeamWithAvailableCredits to skip unpublished platform organizations - Add comprehensive test case that verifies user with memberships in both unpublished platform org and regular team - Ensure only regular team is selected for credit usage, not unpublished platform org - Test validates team.findUnique calls and credit balance checks for correct team filtering Co-Authored-By: anik@cal.com <adhabal2002@gmail.com> * Update credit-service.ts * Update credit-service.test.ts * fix: update test to work with repository-level filtering for unpublished platform orgs - Remove obsolete team.findUnique mocking since filtering moved to repository layer - Update test to mock findAllAcceptedPublishedTeamMemberships correctly - Test now validates integration with repository-level filtering - Maintains core validation that unpublished platform orgs are excluded from credit usage Co-Authored-By: anik@cal.com <adhabal2002@gmail.com> * docs: improve test comments to clarify repository-level filtering scenario - Add clearer comments explaining user has memberships in both teams - Clarify that repository method filters out unpublished platform orgs - Better document the architectural change from PR #22600 Co-Authored-By: anik@cal.com <adhabal2002@gmail.com> * docs: clarify test demonstrates user with memberships in both teams - Add detailed comments explaining user has memberships in TWO teams initially - Clarify that unpublished platform org (teamId: 1) and regular team (teamId: 2) scenario - Explain repository-level filtering removes unpublished platform orgs before credit service - Address user feedback about demonstrating two-team membership scenario Co-Authored-By: anik@cal.com <adhabal2002@gmail.com> * docs: add comprehensive comments explaining two-team filtering scenario - Clarify that user has memberships in BOTH teams initially in database - Explain that repository method filters out unpublished platform org (teamId: 1) - Document that only regular team (teamId: 2) is returned to credit service - Address user feedback about demonstrating the filtering behavior clearly - Test validates integration with repository-level filtering from PR #22600 Co-Authored-By: anik@cal.com <adhabal2002@gmail.com> * fix: update test to properly demonstrate filtering behavior - Mock repository to return only regular team (teamId: 2) as expected after filtering - Update credit balance mock and expectations to match teamId: 2 - Test now passes and validates that unpublished platform org is filtered out - Address user feedback about showing correct filtering behavior in test logic Co-Authored-By: anik@cal.com <adhabal2002@gmail.com> * feat: demonstrate two-team membership scenario in test logic - Mock repository to return both membership objects: teamId 1 and teamId 2 - Show user has memberships in both unpublished platform org and regular team - Mock different credit states: teamId 1 has no credits/limit reached, teamId 2 has available credits - Verify both teams are processed but only regular team (teamId 2) is selected - Test now demonstrates actual filtering behavior in test logic, not just comments - Addresses user feedback: 'create two membership with those two teams in that test' Co-Authored-By: anik@cal.com <adhabal2002@gmail.com> * feat: demonstrate two-team membership scenario in test logic - Mock repository to return both membership objects: teamId 1 and teamId 2 - Show user has memberships in both unpublished platform org and regular team - Mock different credit states: teamId 1 has no credits/limit reached, teamId 2 has available credits - Verify both teams are processed but only regular team (teamId 2) is selected - Test now demonstrates actual filtering behavior in test logic, not just comments - Addresses user feedback: 'create two membership with those two teams in that test' Co-Authored-By: anik@cal.com <adhabal2002@gmail.com> * Revert "feat: demonstrate two-team membership scenario in test logic" This reverts commit d7c4beb2a40179fb5ad14421563626a3bf287b45. * Update credit-service.test.ts * Update credit-service.test.ts * Update credit-service.test.ts --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
co-authored by
anik@cal.com <adhabal2002@gmail.com>
Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
parent
9d65b6f794
commit
bb4260c98b
@@ -644,5 +644,33 @@ describe("CreditService", () => {
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it("should skip unpublished platform organizations and return regular team with credits", async () => {
|
||||
vi.mocked(MembershipRepository.findAllAcceptedPublishedTeamMemberships).mockResolvedValue([
|
||||
{ teamId: 2 },
|
||||
]);
|
||||
|
||||
vi.mocked(CreditsRepository.findCreditBalance).mockResolvedValue({
|
||||
id: "2",
|
||||
additionalCredits: 100,
|
||||
limitReachedAt: null,
|
||||
warningSentAt: null,
|
||||
});
|
||||
vi.spyOn(CreditService.prototype, "_getAllCreditsForTeam").mockResolvedValue({
|
||||
totalMonthlyCredits: 500,
|
||||
totalRemainingMonthlyCredits: 200,
|
||||
additionalCredits: 100,
|
||||
});
|
||||
const result = await creditService.getTeamWithAvailableCredits(1);
|
||||
expect(result).toEqual({
|
||||
teamId: 2,
|
||||
availableCredits: 300,
|
||||
creditType: CreditType.MONTHLY,
|
||||
});
|
||||
|
||||
expect(MembershipRepository.findAllAcceptedPublishedTeamMemberships).toHaveBeenCalledWith(1, MOCK_TX);
|
||||
expect(CreditsRepository.findCreditBalance).toHaveBeenCalledTimes(1);
|
||||
expect(CreditsRepository.findCreditBalance).toHaveBeenCalledWith({ teamId: 2 }, MOCK_TX);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user