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

This commit is contained in:
2026-01-26 01:54:57 +01:00
parent 49cc91e046
commit bf2c0fdb0c
18 changed files with 8 additions and 49 deletions

View File

@@ -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 = () => ({

View File

@@ -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';

View File

@@ -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';

View File

@@ -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';

View File

@@ -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 = {

View File

@@ -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';

View File

@@ -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';

View File

@@ -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');
}); });

View File

@@ -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),

View File

@@ -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',

View File

@@ -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';

View File

@@ -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';

View File

@@ -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';

View File

@@ -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', () => {

View File

@@ -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 = {

View File

@@ -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 = {

View File

@@ -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>();

View File

@@ -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();
} }