Files
gridpilot.gg/apps/website/lib/leagueMembership.test.ts
2026-01-01 22:46:59 +01:00

81 lines
3.1 KiB
TypeScript

import { describe, it, expect, vi, beforeEach } from 'vitest';
import { getMembership, getLeagueMembers, getPrimaryLeagueIdForDriver } from './leagueMembership';
import { LeagueMembershipService } from './services/leagues/LeagueMembershipService';
// Mock the LeagueMembershipService
vi.mock('./services/leagues/LeagueMembershipService', () => ({
LeagueMembershipService: {
getMembership: vi.fn(),
getLeagueMembers: vi.fn(),
getAllMembershipsForDriver: vi.fn(),
},
}));
describe('leagueMembership', () => {
beforeEach(() => {
vi.clearAllMocks();
});
describe('getMembership', () => {
it('should call LeagueMembershipService.getMembership with correct parameters', () => {
const mockResult = { leagueId: 'league-123', driverId: 'driver-456', role: 'member' };
vi.mocked(LeagueMembershipService.getMembership).mockResolvedValue(mockResult);
const result = getMembership('league-123', 'driver-456');
expect(LeagueMembershipService.getMembership).toHaveBeenCalledWith('league-123', 'driver-456');
expect(result).toBeInstanceOf(Promise);
});
});
describe('getLeagueMembers', () => {
it('should call LeagueMembershipService.getLeagueMembers with correct parameter', () => {
const mockResult = [
{ leagueId: 'league-123', driverId: 'driver-456', role: 'member' },
{ leagueId: 'league-123', driverId: 'driver-789', role: 'admin' },
];
vi.mocked(LeagueMembershipService.getLeagueMembers).mockResolvedValue(mockResult);
const result = getLeagueMembers('league-123');
expect(LeagueMembershipService.getLeagueMembers).toHaveBeenCalledWith('league-123');
expect(result).toBeInstanceOf(Promise);
});
});
describe('getPrimaryLeagueIdForDriver', () => {
it('should return null when driver has no memberships', () => {
vi.mocked(LeagueMembershipService.getAllMembershipsForDriver).mockReturnValue([]);
const result = getPrimaryLeagueIdForDriver('driver-456');
expect(LeagueMembershipService.getAllMembershipsForDriver).toHaveBeenCalledWith('driver-456');
expect(result).toBeNull();
});
it('should return the first league ID when driver has memberships', () => {
const mockMemberships = [
{ leagueId: 'league-123', driverId: 'driver-456', role: 'member' },
{ leagueId: 'league-456', driverId: 'driver-456', role: 'admin' },
];
vi.mocked(LeagueMembershipService.getAllMembershipsForDriver).mockReturnValue(mockMemberships);
const result = getPrimaryLeagueIdForDriver('driver-456');
expect(LeagueMembershipService.getAllMembershipsForDriver).toHaveBeenCalledWith('driver-456');
expect(result).toBe('league-123');
});
it('should return the first league ID regardless of role', () => {
const mockMemberships = [
{ leagueId: 'league-789', driverId: 'driver-456', role: 'member' },
{ leagueId: 'league-123', driverId: 'driver-456', role: 'owner' },
];
vi.mocked(LeagueMembershipService.getAllMembershipsForDriver).mockReturnValue(mockMemberships);
const result = getPrimaryLeagueIdForDriver('driver-456');
expect(result).toBe('league-789');
});
});
});