view models
This commit is contained in:
@@ -1,517 +0,0 @@
|
||||
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
||||
import { ServiceFactory } from './ServiceFactory';
|
||||
|
||||
// Mock API clients
|
||||
vi.mock('../api/races/RacesApiClient', () => ({
|
||||
RacesApiClient: class {
|
||||
constructor(baseUrl: string) {
|
||||
this.baseUrl = baseUrl;
|
||||
}
|
||||
},
|
||||
}));
|
||||
|
||||
vi.mock('../api/drivers/DriversApiClient', () => ({
|
||||
DriversApiClient: class {
|
||||
constructor(baseUrl: string) {
|
||||
this.baseUrl = baseUrl;
|
||||
}
|
||||
},
|
||||
}));
|
||||
|
||||
vi.mock('../api/teams/TeamsApiClient', () => ({
|
||||
TeamsApiClient: class {
|
||||
constructor(baseUrl: string) {
|
||||
this.baseUrl = baseUrl;
|
||||
}
|
||||
},
|
||||
}));
|
||||
|
||||
vi.mock('../api/leagues/LeaguesApiClient', () => ({
|
||||
LeaguesApiClient: class {
|
||||
constructor(baseUrl: string) {
|
||||
this.baseUrl = baseUrl;
|
||||
}
|
||||
},
|
||||
}));
|
||||
|
||||
vi.mock('../api/sponsors/SponsorsApiClient', () => ({
|
||||
SponsorsApiClient: class {
|
||||
constructor(baseUrl: string) {
|
||||
this.baseUrl = baseUrl;
|
||||
}
|
||||
},
|
||||
}));
|
||||
|
||||
vi.mock('../api/payments/PaymentsApiClient', () => ({
|
||||
PaymentsApiClient: class {
|
||||
constructor(baseUrl: string) {
|
||||
this.baseUrl = baseUrl;
|
||||
}
|
||||
},
|
||||
}));
|
||||
|
||||
vi.mock('../api/auth/AuthApiClient', () => ({
|
||||
AuthApiClient: class {
|
||||
constructor(baseUrl: string) {
|
||||
this.baseUrl = baseUrl;
|
||||
}
|
||||
},
|
||||
}));
|
||||
|
||||
vi.mock('../api/analytics/AnalyticsApiClient', () => ({
|
||||
AnalyticsApiClient: class {
|
||||
constructor(baseUrl: string) {
|
||||
this.baseUrl = baseUrl;
|
||||
}
|
||||
},
|
||||
}));
|
||||
|
||||
vi.mock('../api/media/MediaApiClient', () => ({
|
||||
MediaApiClient: class {
|
||||
constructor(baseUrl: string) {
|
||||
this.baseUrl = baseUrl;
|
||||
}
|
||||
},
|
||||
}));
|
||||
|
||||
// Mock presenters
|
||||
vi.mock('../presenters/RaceDetailPresenter', () => ({
|
||||
RaceDetailPresenter: class {},
|
||||
}));
|
||||
|
||||
vi.mock('../presenters/RaceResultsDetailPresenter', () => ({
|
||||
RaceResultsDetailPresenter: class {},
|
||||
}));
|
||||
|
||||
vi.mock('../presenters/RaceWithSOFPresenter', () => ({
|
||||
RaceWithSOFPresenter: class {},
|
||||
}));
|
||||
|
||||
vi.mock('../presenters/ImportRaceResultsPresenter', () => ({
|
||||
ImportRaceResultsPresenter: class {},
|
||||
}));
|
||||
|
||||
vi.mock('../presenters/DriversLeaderboardPresenter', () => ({
|
||||
DriversLeaderboardPresenter: class {},
|
||||
}));
|
||||
|
||||
vi.mock('../presenters/DriverPresenter', () => ({
|
||||
DriverPresenter: class {},
|
||||
}));
|
||||
|
||||
vi.mock('../presenters/CompleteOnboardingPresenter', () => ({
|
||||
CompleteOnboardingPresenter: class {},
|
||||
}));
|
||||
|
||||
vi.mock('../presenters/DriverRegistrationStatusPresenter', () => ({
|
||||
DriverRegistrationStatusPresenter: class {},
|
||||
}));
|
||||
|
||||
vi.mock('../presenters/TeamDetailsPresenter', () => ({
|
||||
TeamDetailsPresenter: class {},
|
||||
}));
|
||||
|
||||
vi.mock('../presenters/TeamListPresenter', () => ({
|
||||
TeamListPresenter: class {},
|
||||
}));
|
||||
|
||||
vi.mock('../presenters/TeamMembersPresenter', () => ({
|
||||
TeamMembersPresenter: class {},
|
||||
}));
|
||||
|
||||
vi.mock('../presenters/TeamJoinRequestPresenter', () => ({
|
||||
TeamJoinRequestPresenter: class {},
|
||||
}));
|
||||
|
||||
vi.mock('../presenters/LeagueSummaryPresenter', () => ({
|
||||
LeagueSummaryPresenter: class {},
|
||||
}));
|
||||
|
||||
vi.mock('../presenters/LeagueStandingsPresenter', () => ({
|
||||
LeagueStandingsPresenter: class {},
|
||||
}));
|
||||
|
||||
vi.mock('../presenters/LeagueMembersPresenter', () => ({
|
||||
LeagueMembersPresenter: class {},
|
||||
}));
|
||||
|
||||
vi.mock('../presenters/SponsorListPresenter', () => ({
|
||||
SponsorListPresenter: class {},
|
||||
}));
|
||||
|
||||
vi.mock('../presenters/SponsorDashboardPresenter', () => ({
|
||||
SponsorDashboardPresenter: class {},
|
||||
}));
|
||||
|
||||
vi.mock('../presenters/SponsorSponsorshipsPresenter', () => ({
|
||||
SponsorSponsorshipsPresenter: class {},
|
||||
}));
|
||||
|
||||
vi.mock('../presenters/SponsorshipPricingPresenter', () => ({
|
||||
SponsorshipPricingPresenter: class {},
|
||||
}));
|
||||
|
||||
vi.mock('../presenters/PaymentListPresenter', () => ({
|
||||
PaymentListPresenter: class {},
|
||||
}));
|
||||
|
||||
vi.mock('../presenters/AnalyticsDashboardPresenter', () => ({
|
||||
AnalyticsDashboardPresenter: class {},
|
||||
}));
|
||||
|
||||
vi.mock('../presenters/AnalyticsMetricsPresenter', () => ({
|
||||
AnalyticsMetricsPresenter: class {},
|
||||
}));
|
||||
|
||||
vi.mock('../presenters/MediaPresenter', () => ({
|
||||
MediaPresenter: class {},
|
||||
}));
|
||||
|
||||
vi.mock('../presenters/AvatarPresenter', () => ({
|
||||
AvatarPresenter: class {},
|
||||
}));
|
||||
|
||||
vi.mock('../presenters/SessionPresenter', () => ({
|
||||
SessionPresenter: class {},
|
||||
}));
|
||||
|
||||
vi.mock('../presenters/AnalyticsDashboardPresenter', () => ({
|
||||
AnalyticsDashboardPresenter: class {},
|
||||
}));
|
||||
|
||||
vi.mock('../presenters/AnalyticsMetricsPresenter', () => ({
|
||||
AnalyticsMetricsPresenter: class {},
|
||||
}));
|
||||
|
||||
vi.mock('../presenters/MediaPresenter', () => ({
|
||||
MediaPresenter: class {},
|
||||
}));
|
||||
|
||||
vi.mock('../presenters/AvatarPresenter', () => ({
|
||||
AvatarPresenter: class {},
|
||||
}));
|
||||
|
||||
vi.mock('../presenters/SessionPresenter', () => ({
|
||||
SessionPresenter: class {},
|
||||
}));
|
||||
|
||||
vi.mock('../presenters', () => ({
|
||||
presentPayment: vi.fn(),
|
||||
presentMembershipFee: vi.fn(),
|
||||
presentPrize: vi.fn(),
|
||||
presentWallet: vi.fn(),
|
||||
}));
|
||||
|
||||
// Mock services
|
||||
vi.mock('./races/RaceService', () => ({
|
||||
RaceService: class {
|
||||
constructor(...args: any[]) {
|
||||
return { type: 'RaceService', args };
|
||||
}
|
||||
},
|
||||
}));
|
||||
|
||||
vi.mock('./races/RaceResultsService', () => ({
|
||||
RaceResultsService: class {
|
||||
constructor(...args: any[]) {
|
||||
return { type: 'RaceResultsService', args };
|
||||
}
|
||||
},
|
||||
}));
|
||||
|
||||
vi.mock('./drivers/DriverService', () => ({
|
||||
DriverService: class {
|
||||
constructor(...args: any[]) {
|
||||
return { type: 'DriverService', args };
|
||||
}
|
||||
},
|
||||
}));
|
||||
|
||||
vi.mock('./drivers/DriverRegistrationService', () => ({
|
||||
DriverRegistrationService: class {
|
||||
constructor(...args: any[]) {
|
||||
return { type: 'DriverRegistrationService', args };
|
||||
}
|
||||
},
|
||||
}));
|
||||
|
||||
vi.mock('./teams/TeamService', () => ({
|
||||
TeamService: class {
|
||||
constructor(...args: any[]) {
|
||||
return { type: 'TeamService', args };
|
||||
}
|
||||
},
|
||||
}));
|
||||
|
||||
vi.mock('./teams/TeamJoinService', () => ({
|
||||
TeamJoinService: class {
|
||||
constructor(...args: any[]) {
|
||||
return { type: 'TeamJoinService', args };
|
||||
}
|
||||
},
|
||||
}));
|
||||
|
||||
vi.mock('./leagues/LeagueService', () => ({
|
||||
LeagueService: class {
|
||||
constructor(...args: any[]) {
|
||||
return { type: 'LeagueService', args };
|
||||
}
|
||||
},
|
||||
}));
|
||||
|
||||
vi.mock('./leagues/LeagueMembershipService', () => ({
|
||||
LeagueMembershipService: class {
|
||||
constructor(...args: any[]) {
|
||||
return { type: 'LeagueMembershipService', args };
|
||||
}
|
||||
},
|
||||
}));
|
||||
|
||||
vi.mock('./sponsors/SponsorService', () => ({
|
||||
SponsorService: class {
|
||||
constructor(...args: any[]) {
|
||||
return { type: 'SponsorService', args };
|
||||
}
|
||||
},
|
||||
}));
|
||||
|
||||
vi.mock('./sponsors/SponsorshipService', () => ({
|
||||
SponsorshipService: class {
|
||||
constructor(...args: any[]) {
|
||||
return { type: 'SponsorshipService', args };
|
||||
}
|
||||
},
|
||||
}));
|
||||
|
||||
vi.mock('./payments/PaymentService', () => ({
|
||||
PaymentService: class {
|
||||
constructor(...args: any[]) {
|
||||
return { type: 'PaymentService', args };
|
||||
}
|
||||
},
|
||||
}));
|
||||
|
||||
vi.mock('./analytics/AnalyticsService', () => ({
|
||||
AnalyticsService: class {
|
||||
constructor(...args: any[]) {
|
||||
return { type: 'AnalyticsService', args };
|
||||
}
|
||||
},
|
||||
}));
|
||||
|
||||
vi.mock('./analytics/DashboardService', () => ({
|
||||
DashboardService: class {
|
||||
constructor(...args: any[]) {
|
||||
return { type: 'DashboardService', args };
|
||||
}
|
||||
},
|
||||
}));
|
||||
|
||||
vi.mock('./media/MediaService', () => ({
|
||||
MediaService: class {
|
||||
constructor(...args: any[]) {
|
||||
return { type: 'MediaService', args };
|
||||
}
|
||||
},
|
||||
}));
|
||||
|
||||
vi.mock('./media/AvatarService', () => ({
|
||||
AvatarService: class {
|
||||
constructor(...args: any[]) {
|
||||
return { type: 'AvatarService', args };
|
||||
}
|
||||
},
|
||||
}));
|
||||
|
||||
vi.mock('./payments/WalletService', () => ({
|
||||
WalletService: class {
|
||||
constructor(...args: any[]) {
|
||||
return { type: 'WalletService', args };
|
||||
}
|
||||
},
|
||||
}));
|
||||
|
||||
vi.mock('./payments/MembershipFeeService', () => ({
|
||||
MembershipFeeService: class {
|
||||
constructor(...args: any[]) {
|
||||
return { type: 'MembershipFeeService', args };
|
||||
}
|
||||
},
|
||||
}));
|
||||
|
||||
vi.mock('./auth/AuthService', () => ({
|
||||
AuthService: class {
|
||||
constructor(...args: any[]) {
|
||||
return { type: 'AuthService', args };
|
||||
}
|
||||
},
|
||||
}));
|
||||
|
||||
vi.mock('./auth/SessionService', () => ({
|
||||
SessionService: class {
|
||||
constructor(...args: any[]) {
|
||||
return { type: 'SessionService', args };
|
||||
}
|
||||
},
|
||||
}));
|
||||
|
||||
describe('ServiceFactory', () => {
|
||||
let factory: ServiceFactory;
|
||||
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks();
|
||||
factory = new ServiceFactory('http://test-api.com');
|
||||
});
|
||||
|
||||
it('should create RaceService with correct dependencies', () => {
|
||||
const service = factory.createRaceService();
|
||||
|
||||
expect(service).toBeDefined();
|
||||
expect(service.type).toBe('RaceService');
|
||||
expect(service.args).toHaveLength(2);
|
||||
});
|
||||
|
||||
it('should create RaceResultsService with correct dependencies', () => {
|
||||
const service = factory.createRaceResultsService();
|
||||
|
||||
expect(service).toBeDefined();
|
||||
expect(service.type).toBe('RaceResultsService');
|
||||
expect(service.args).toHaveLength(4);
|
||||
});
|
||||
|
||||
it('should create DriverService with correct dependencies', () => {
|
||||
const service = factory.createDriverService();
|
||||
|
||||
expect(service).toBeDefined();
|
||||
expect(service.type).toBe('DriverService');
|
||||
expect(service.args).toHaveLength(4);
|
||||
});
|
||||
|
||||
it('should create DriverRegistrationService with correct dependencies', () => {
|
||||
const service = factory.createDriverRegistrationService();
|
||||
|
||||
expect(service).toBeDefined();
|
||||
expect(service.type).toBe('DriverRegistrationService');
|
||||
expect(service.args).toHaveLength(2);
|
||||
});
|
||||
|
||||
it('should create TeamService with correct dependencies', () => {
|
||||
const service = factory.createTeamService();
|
||||
|
||||
expect(service).toBeDefined();
|
||||
expect(service.type).toBe('TeamService');
|
||||
expect(service.args).toHaveLength(4);
|
||||
});
|
||||
|
||||
it('should create TeamJoinService with correct dependencies', () => {
|
||||
const service = factory.createTeamJoinService();
|
||||
|
||||
expect(service).toBeDefined();
|
||||
expect(service.type).toBe('TeamJoinService');
|
||||
expect(service.args).toHaveLength(2);
|
||||
});
|
||||
|
||||
it('should create LeagueService with correct dependencies', () => {
|
||||
const service = factory.createLeagueService();
|
||||
|
||||
expect(service).toBeDefined();
|
||||
expect(service.type).toBe('LeagueService');
|
||||
expect(service.args).toHaveLength(3);
|
||||
});
|
||||
|
||||
it('should create LeagueMembershipService with correct dependencies', () => {
|
||||
const service = factory.createLeagueMembershipService();
|
||||
|
||||
expect(service).toBeDefined();
|
||||
expect(service.type).toBe('LeagueMembershipService');
|
||||
expect(service.args).toHaveLength(2);
|
||||
});
|
||||
|
||||
it('should create SponsorService with correct dependencies', () => {
|
||||
const service = factory.createSponsorService();
|
||||
|
||||
expect(service).toBeDefined();
|
||||
expect(service.type).toBe('SponsorService');
|
||||
expect(service.args).toHaveLength(4);
|
||||
});
|
||||
|
||||
it('should create SponsorshipService with correct dependencies', () => {
|
||||
const service = factory.createSponsorshipService();
|
||||
|
||||
expect(service).toBeDefined();
|
||||
expect(service.type).toBe('SponsorshipService');
|
||||
expect(service.args).toHaveLength(3);
|
||||
});
|
||||
|
||||
it('should create PaymentService with correct dependencies', () => {
|
||||
const service = factory.createPaymentService();
|
||||
|
||||
expect(service).toBeDefined();
|
||||
expect(service.type).toBe('PaymentService');
|
||||
expect(service.args).toHaveLength(6);
|
||||
});
|
||||
|
||||
it('should create AnalyticsService with correct dependencies', () => {
|
||||
const service = factory.createAnalyticsService();
|
||||
|
||||
expect(service).toBeDefined();
|
||||
expect(service.type).toBe('AnalyticsService');
|
||||
expect(service.args).toHaveLength(1);
|
||||
});
|
||||
|
||||
it('should create DashboardService with correct dependencies', () => {
|
||||
const service = factory.createDashboardService();
|
||||
|
||||
expect(service).toBeDefined();
|
||||
expect(service.type).toBe('DashboardService');
|
||||
expect(service.args).toHaveLength(3);
|
||||
});
|
||||
|
||||
it('should create MediaService with correct dependencies', () => {
|
||||
const service = factory.createMediaService();
|
||||
|
||||
expect(service).toBeDefined();
|
||||
expect(service.type).toBe('MediaService');
|
||||
expect(service.args).toHaveLength(2);
|
||||
});
|
||||
|
||||
it('should create AvatarService with correct dependencies', () => {
|
||||
const service = factory.createAvatarService();
|
||||
|
||||
expect(service).toBeDefined();
|
||||
expect(service.type).toBe('AvatarService');
|
||||
expect(service.args).toHaveLength(2);
|
||||
});
|
||||
|
||||
it('should create WalletService with correct dependencies', () => {
|
||||
const service = factory.createWalletService();
|
||||
|
||||
expect(service).toBeDefined();
|
||||
expect(service.type).toBe('WalletService');
|
||||
expect(service.args).toHaveLength(1);
|
||||
});
|
||||
|
||||
it('should create MembershipFeeService with correct dependencies', () => {
|
||||
const service = factory.createMembershipFeeService();
|
||||
|
||||
expect(service).toBeDefined();
|
||||
expect(service.type).toBe('MembershipFeeService');
|
||||
expect(service.args).toHaveLength(1);
|
||||
});
|
||||
|
||||
it('should create AuthService with correct dependencies', () => {
|
||||
const service = factory.createAuthService();
|
||||
|
||||
expect(service).toBeDefined();
|
||||
expect(service.type).toBe('AuthService');
|
||||
expect(service.args).toHaveLength(1);
|
||||
});
|
||||
|
||||
it('should create SessionService with correct dependencies', () => {
|
||||
const service = factory.createSessionService();
|
||||
|
||||
expect(service).toBeDefined();
|
||||
expect(service.type).toBe('SessionService');
|
||||
expect(service.args).toHaveLength(2);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user