code quality
Some checks failed
CI / lint-typecheck (pull_request) Failing after 1m29s
CI / tests (pull_request) Has been skipped
CI / contract-tests (pull_request) Has been skipped
CI / e2e-tests (pull_request) Has been skipped
CI / comment-pr (pull_request) Has been skipped
CI / commit-types (pull_request) Has been skipped
Some checks failed
CI / lint-typecheck (pull_request) Failing after 1m29s
CI / tests (pull_request) Has been skipped
CI / contract-tests (pull_request) Has been skipped
CI / e2e-tests (pull_request) Has been skipped
CI / comment-pr (pull_request) Has been skipped
CI / commit-types (pull_request) Has been skipped
This commit is contained in:
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
||||||
import { GetUserRatingLedgerQueryHandler } from './GetUserRatingLedgerQuery';
|
import { GetUserRatingLedgerQueryHandler } from './GetUserRatingLedgerQuery';
|
||||||
import { RatingEventRepository, RatingEventFilter } from '../../domain/repositories/RatingEventRepository';
|
import { RatingEventRepository } from '../../domain/repositories/RatingEventRepository';
|
||||||
|
|
||||||
// Mock repository
|
// Mock repository
|
||||||
const createMockRepository = () => ({
|
const createMockRepository = () => ({
|
||||||
|
|||||||
@@ -6,10 +6,6 @@
|
|||||||
|
|
||||||
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
||||||
import { CloseAdminVoteSessionUseCase } from './CloseAdminVoteSessionUseCase';
|
import { CloseAdminVoteSessionUseCase } from './CloseAdminVoteSessionUseCase';
|
||||||
import { AdminVoteSessionRepository } from '../../domain/repositories/AdminVoteSessionRepository';
|
|
||||||
import { RatingEventRepository } from '../../domain/repositories/RatingEventRepository';
|
|
||||||
import { UserRatingRepository } from '../../domain/repositories/UserRatingRepository';
|
|
||||||
import { AdminVoteSession } from '../../domain/entities/AdminVoteSession';
|
|
||||||
import { RatingEventFactory } from '../../domain/services/RatingEventFactory';
|
import { RatingEventFactory } from '../../domain/services/RatingEventFactory';
|
||||||
import { RatingSnapshotCalculator } from '../../domain/services/RatingSnapshotCalculator';
|
import { RatingSnapshotCalculator } from '../../domain/services/RatingSnapshotCalculator';
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ import {
|
|||||||
DriverRankingsQuery,
|
DriverRankingsQuery,
|
||||||
DriverRankingsResult,
|
DriverRankingsResult,
|
||||||
DriverRankingEntry,
|
DriverRankingEntry,
|
||||||
PaginationMetadata,
|
|
||||||
} from '../ports/DriverRankingsQuery';
|
} from '../ports/DriverRankingsQuery';
|
||||||
import { ValidationError } from '../../../shared/errors/ValidationError';
|
import { ValidationError } from '../../../shared/errors/ValidationError';
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ import {
|
|||||||
TeamRankingsQuery,
|
TeamRankingsQuery,
|
||||||
TeamRankingsResult,
|
TeamRankingsResult,
|
||||||
TeamRankingEntry,
|
TeamRankingEntry,
|
||||||
PaginationMetadata,
|
|
||||||
} from '../ports/TeamRankingsQuery';
|
} from '../ports/TeamRankingsQuery';
|
||||||
import { ValidationError } from '../../../shared/errors/ValidationError';
|
import { ValidationError } from '../../../shared/errors/ValidationError';
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
||||||
import { JoinLeagueUseCase } from './JoinLeagueUseCase';
|
import { JoinLeagueUseCase } from './JoinLeagueUseCase';
|
||||||
import type { LeagueRepository } from '../ports/LeagueRepository';
|
|
||||||
import type { DriverRepository } from '../../../racing/domain/repositories/DriverRepository';
|
|
||||||
import type { EventPublisher } from '../../../shared/ports/EventPublisher';
|
|
||||||
import type { JoinLeagueCommand } from '../ports/JoinLeagueCommand';
|
import type { JoinLeagueCommand } from '../ports/JoinLeagueCommand';
|
||||||
|
|
||||||
const mockLeagueRepository = {
|
const mockLeagueRepository = {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { LeagueRepository, LeagueData } from '../ports/LeagueRepository';
|
import { LeagueRepository } from '../ports/LeagueRepository';
|
||||||
import { DriverRepository } from '../../../racing/domain/repositories/DriverRepository';
|
import { DriverRepository } from '../../../racing/domain/repositories/DriverRepository';
|
||||||
import { EventPublisher } from '../../../shared/ports/EventPublisher';
|
import { EventPublisher } from '../../../shared/ports/EventPublisher';
|
||||||
import { JoinLeagueCommand } from '../ports/JoinLeagueCommand';
|
import { JoinLeagueCommand } from '../ports/JoinLeagueCommand';
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
import { Result } from '@core/shared/domain/Result';
|
|
||||||
import { describe, expect, it, vi, type Mock } from 'vitest';
|
import { describe, expect, it, vi, type Mock } from 'vitest';
|
||||||
import type { MediaResolverPort } from '@core/ports/media/MediaResolverPort';
|
import type { MediaResolverPort } from '@core/ports/media/MediaResolverPort';
|
||||||
import { ResolveMediaReferenceUseCase } from './ResolveMediaReferenceUseCase';
|
import { ResolveMediaReferenceUseCase } from './ResolveMediaReferenceUseCase';
|
||||||
|
|||||||
@@ -19,15 +19,6 @@ describe('NotificationGateway - Interface Contract', () => {
|
|||||||
getChannel: vi.fn().mockReturnValue('in_app'),
|
getChannel: vi.fn().mockReturnValue('in_app'),
|
||||||
};
|
};
|
||||||
|
|
||||||
const notification = Notification.create({
|
|
||||||
id: 'test-id',
|
|
||||||
recipientId: 'driver-1',
|
|
||||||
type: 'system_announcement',
|
|
||||||
title: 'Test',
|
|
||||||
body: 'Test body',
|
|
||||||
channel: 'in_app',
|
|
||||||
});
|
|
||||||
|
|
||||||
expect(mockGateway.send).toBeDefined();
|
expect(mockGateway.send).toBeDefined();
|
||||||
expect(typeof mockGateway.send).toBe('function');
|
expect(typeof mockGateway.send).toBe('function');
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -201,17 +201,6 @@ describe('NotificationPreferenceRepository - Integration', () => {
|
|||||||
it('handles workflow: get or create, then update', async () => {
|
it('handles workflow: get or create, then update', async () => {
|
||||||
const defaultPreference = NotificationPreference.createDefault('driver-1');
|
const defaultPreference = NotificationPreference.createDefault('driver-1');
|
||||||
|
|
||||||
const updatedPreference = NotificationPreference.create({
|
|
||||||
id: 'driver-1',
|
|
||||||
driverId: 'driver-1',
|
|
||||||
channels: {
|
|
||||||
in_app: { enabled: true },
|
|
||||||
email: { enabled: true },
|
|
||||||
discord: { enabled: false },
|
|
||||||
push: { enabled: false },
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const mockRepository: NotificationPreferenceRepository = {
|
const mockRepository: NotificationPreferenceRepository = {
|
||||||
findByDriverId: vi.fn().mockResolvedValue(null),
|
findByDriverId: vi.fn().mockResolvedValue(null),
|
||||||
save: vi.fn().mockResolvedValue(undefined),
|
save: vi.fn().mockResolvedValue(undefined),
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ describe('MediaResolverPort - Comprehensive Tests', () => {
|
|||||||
it('should define resolve method signature correctly', () => {
|
it('should define resolve method signature correctly', () => {
|
||||||
// Verify the interface has the correct method signature
|
// Verify the interface has the correct method signature
|
||||||
const testInterface: MediaResolverPort = {
|
const testInterface: MediaResolverPort = {
|
||||||
resolve: async (ref: MediaReference): Promise<string | null> => {
|
resolve: async (): Promise<string | null> => {
|
||||||
return null;
|
return null;
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -124,7 +124,6 @@ describe('MediaResolverPort - Comprehensive Tests', () => {
|
|||||||
|
|
||||||
it('should return null for generated reference without generationRequestId', () => {
|
it('should return null for generated reference without generationRequestId', () => {
|
||||||
// Create a reference with missing generationRequestId
|
// Create a reference with missing generationRequestId
|
||||||
const ref = MediaReference.createGenerated('valid-id');
|
|
||||||
// Manually create an invalid reference
|
// Manually create an invalid reference
|
||||||
const invalidRef = { type: 'generated' } as MediaReference;
|
const invalidRef = { type: 'generated' } as MediaReference;
|
||||||
const result = ResolutionStrategies.generated(invalidRef);
|
const result = ResolutionStrategies.generated(invalidRef);
|
||||||
@@ -164,7 +163,6 @@ describe('MediaResolverPort - Comprehensive Tests', () => {
|
|||||||
|
|
||||||
it('should return null for uploaded reference without mediaId', () => {
|
it('should return null for uploaded reference without mediaId', () => {
|
||||||
// Create a reference with missing mediaId
|
// Create a reference with missing mediaId
|
||||||
const ref = MediaReference.createUploaded('valid-id');
|
|
||||||
// Manually create an invalid reference
|
// Manually create an invalid reference
|
||||||
const invalidRef = { type: 'uploaded' } as MediaReference;
|
const invalidRef = { type: 'uploaded' } as MediaReference;
|
||||||
const result = ResolutionStrategies.uploaded(invalidRef);
|
const result = ResolutionStrategies.uploaded(invalidRef);
|
||||||
@@ -284,7 +282,7 @@ describe('MediaResolverPort - Comprehensive Tests', () => {
|
|||||||
describe('isMediaResolverPort Type Guard', () => {
|
describe('isMediaResolverPort Type Guard', () => {
|
||||||
it('should return true for valid MediaResolverPort implementation', () => {
|
it('should return true for valid MediaResolverPort implementation', () => {
|
||||||
const validResolver: MediaResolverPort = {
|
const validResolver: MediaResolverPort = {
|
||||||
resolve: async (ref: MediaReference): Promise<string | null> => {
|
resolve: async (): Promise<string | null> => {
|
||||||
return '/test/path';
|
return '/test/path';
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -332,7 +330,7 @@ describe('MediaResolverPort - Comprehensive Tests', () => {
|
|||||||
|
|
||||||
it('should return true for object with resolve method and other properties', () => {
|
it('should return true for object with resolve method and other properties', () => {
|
||||||
const validResolver = {
|
const validResolver = {
|
||||||
resolve: async (ref: MediaReference): Promise<string | null> => {
|
resolve: async (): Promise<string | null> => {
|
||||||
return '/test/path';
|
return '/test/path';
|
||||||
},
|
},
|
||||||
extraProperty: 'value',
|
extraProperty: 'value',
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import { describe, it, expect, vi } from 'vitest';
|
import { describe, it, expect, vi } from 'vitest';
|
||||||
import { GetDriverUseCase } from './GetDriverUseCase';
|
import { GetDriverUseCase } from './GetDriverUseCase';
|
||||||
import { Result } from '@core/shared/domain/Result';
|
|
||||||
import type { DriverRepository } from '../../domain/repositories/DriverRepository';
|
import type { DriverRepository } from '../../domain/repositories/DriverRepository';
|
||||||
import type { Driver } from '../../domain/entities/Driver';
|
import type { Driver } from '../../domain/entities/Driver';
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import { describe, it, expect, vi } from 'vitest';
|
import { describe, it, expect, vi } from 'vitest';
|
||||||
import { GetTeamsLeaderboardUseCase } from './GetTeamsLeaderboardUseCase';
|
import { GetTeamsLeaderboardUseCase } from './GetTeamsLeaderboardUseCase';
|
||||||
import { Result } from '@core/shared/domain/Result';
|
|
||||||
import type { TeamRepository } from '../../domain/repositories/TeamRepository';
|
import type { TeamRepository } from '../../domain/repositories/TeamRepository';
|
||||||
import type { TeamMembershipRepository } from '../../domain/repositories/TeamMembershipRepository';
|
import type { TeamMembershipRepository } from '../../domain/repositories/TeamMembershipRepository';
|
||||||
import type { Logger } from '@core/shared/domain/Logger';
|
import type { Logger } from '@core/shared/domain/Logger';
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { describe, it, expect, vi } from 'vitest';
|
import { describe, it, expect, vi } from 'vitest';
|
||||||
import { RankingUseCase, type DriverRanking } from './RankingUseCase';
|
import { RankingUseCase } from './RankingUseCase';
|
||||||
import type { StandingRepository } from '../../domain/repositories/StandingRepository';
|
import type { StandingRepository } from '../../domain/repositories/StandingRepository';
|
||||||
import type { DriverRepository } from '../../domain/repositories/DriverRepository';
|
import type { DriverRepository } from '../../domain/repositories/DriverRepository';
|
||||||
import type { DriverStatsRepository } from '../../domain/repositories/DriverStatsRepository';
|
import type { DriverStatsRepository } from '../../domain/repositories/DriverStatsRepository';
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { describe, it, expect, vi } from 'vitest';
|
import { describe, it, expect } from 'vitest';
|
||||||
import { RaceResultGenerator } from './RaceResultGenerator';
|
import { RaceResultGenerator } from './RaceResultGenerator';
|
||||||
|
|
||||||
describe('RaceResultGenerator', () => {
|
describe('RaceResultGenerator', () => {
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import { describe, it, expect, vi } from 'vitest';
|
import { describe, it, expect, vi } from 'vitest';
|
||||||
import { ChampionshipAggregator } from './ChampionshipAggregator';
|
import { ChampionshipAggregator } from './ChampionshipAggregator';
|
||||||
import type { DropScoreApplier } from './DropScoreApplier';
|
import type { DropScoreApplier } from './DropScoreApplier';
|
||||||
import { Points } from '../value-objects/Points';
|
|
||||||
|
|
||||||
describe('ChampionshipAggregator', () => {
|
describe('ChampionshipAggregator', () => {
|
||||||
const mockDropScoreApplier = {
|
const mockDropScoreApplier = {
|
||||||
|
|||||||
@@ -9,8 +9,6 @@ import { CalculateRatingUseCase } from './CalculateRatingUseCase';
|
|||||||
import { Driver } from '../../../racing/domain/entities/Driver';
|
import { Driver } from '../../../racing/domain/entities/Driver';
|
||||||
import { Race } from '../../../racing/domain/entities/Race';
|
import { Race } from '../../../racing/domain/entities/Race';
|
||||||
import { Result } from '../../../racing/domain/entities/result/Result';
|
import { Result } from '../../../racing/domain/entities/result/Result';
|
||||||
import { Rating } from '../../domain/Rating';
|
|
||||||
import { RatingCalculatedEvent } from '../../domain/events/RatingCalculatedEvent';
|
|
||||||
|
|
||||||
// Mock repositories and publisher
|
// Mock repositories and publisher
|
||||||
const mockDriverRepository = {
|
const mockDriverRepository = {
|
||||||
|
|||||||
@@ -40,10 +40,6 @@ export class GetRatingLeaderboardUseCase {
|
|||||||
const { limit = 50, offset = 0 } = request;
|
const { limit = 50, offset = 0 } = request;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Get all ratings
|
|
||||||
const allRatings: Rating[] = [];
|
|
||||||
const driverIds = new Set<string>();
|
|
||||||
|
|
||||||
// Group ratings by driver and get latest rating for each driver
|
// Group ratings by driver and get latest rating for each driver
|
||||||
const driverRatings = new Map<string, Rating>();
|
const driverRatings = new Map<string, Rating>();
|
||||||
|
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ describe('DomainEvent', () => {
|
|||||||
describe('DomainEventPublisher interface', () => {
|
describe('DomainEventPublisher interface', () => {
|
||||||
it('should have publish method', async () => {
|
it('should have publish method', async () => {
|
||||||
const mockPublisher: DomainEventPublisher = {
|
const mockPublisher: DomainEventPublisher = {
|
||||||
publish: async (event: DomainEvent) => {
|
publish: async () => {
|
||||||
// Mock implementation
|
// Mock implementation
|
||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user