Files
gridpilot.gg/tests/integration/media/MediaTestContext.ts
Marc Mintel 6df38a462a
Some checks failed
CI / lint-typecheck (pull_request) Failing after 4m50s
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
integration tests
2026-01-23 11:44:59 +01:00

74 lines
4.2 KiB
TypeScript

import { ConsoleLogger } from '@adapters/logging/ConsoleLogger';
import { InMemoryAvatarRepository } from '@adapters/media/persistence/inmemory/InMemoryAvatarRepository';
import { InMemoryAvatarGenerationRepository } from '@adapters/media/persistence/inmemory/InMemoryAvatarGenerationRepository';
import { InMemoryMediaRepository } from '@adapters/media/persistence/inmemory/InMemoryMediaRepository';
import { InMemoryMediaStorageAdapter } from '@adapters/media/ports/InMemoryMediaStorageAdapter';
import { InMemoryFaceValidationAdapter } from '@adapters/media/ports/InMemoryFaceValidationAdapter';
import { InMemoryAvatarGenerationAdapter } from '@adapters/media/ports/InMemoryAvatarGenerationAdapter';
import { InMemoryMediaEventPublisher } from '@adapters/media/events/InMemoryMediaEventPublisher';
import { GetAvatarUseCase } from '@core/media/application/use-cases/GetAvatarUseCase';
import { UpdateAvatarUseCase } from '@core/media/application/use-cases/UpdateAvatarUseCase';
import { RequestAvatarGenerationUseCase } from '@core/media/application/use-cases/RequestAvatarGenerationUseCase';
import { SelectAvatarUseCase } from '@core/media/application/use-cases/SelectAvatarUseCase';
import { GetUploadedMediaUseCase } from '@core/media/application/use-cases/GetUploadedMediaUseCase';
import { DeleteMediaUseCase } from '@core/media/application/use-cases/DeleteMediaUseCase';
import { UploadMediaUseCase } from '@core/media/application/use-cases/UploadMediaUseCase';
import { GetMediaUseCase } from '@core/media/application/use-cases/GetMediaUseCase';
export class MediaTestContext {
public readonly logger: ConsoleLogger;
public readonly avatarRepository: InMemoryAvatarRepository;
public readonly avatarGenerationRepository: InMemoryAvatarGenerationRepository;
public readonly mediaRepository: InMemoryMediaRepository;
public readonly mediaStorage: InMemoryMediaStorageAdapter;
public readonly faceValidation: InMemoryFaceValidationAdapter;
public readonly avatarGeneration: InMemoryAvatarGenerationAdapter;
public readonly eventPublisher: InMemoryMediaEventPublisher;
public readonly getAvatarUseCase: GetAvatarUseCase;
public readonly updateAvatarUseCase: UpdateAvatarUseCase;
public readonly requestAvatarGenerationUseCase: RequestAvatarGenerationUseCase;
public readonly selectAvatarUseCase: SelectAvatarUseCase;
public readonly getUploadedMediaUseCase: GetUploadedMediaUseCase;
public readonly deleteMediaUseCase: DeleteMediaUseCase;
public readonly uploadMediaUseCase: UploadMediaUseCase;
public readonly getMediaUseCase: GetMediaUseCase;
private constructor() {
this.logger = new ConsoleLogger();
this.avatarRepository = new InMemoryAvatarRepository(this.logger);
this.avatarGenerationRepository = new InMemoryAvatarGenerationRepository(this.logger);
this.mediaRepository = new InMemoryMediaRepository(this.logger);
this.mediaStorage = new InMemoryMediaStorageAdapter(this.logger);
this.faceValidation = new InMemoryFaceValidationAdapter(this.logger);
this.avatarGeneration = new InMemoryAvatarGenerationAdapter(this.logger);
this.eventPublisher = new InMemoryMediaEventPublisher(this.logger);
this.getAvatarUseCase = new GetAvatarUseCase(this.avatarRepository, this.logger);
this.updateAvatarUseCase = new UpdateAvatarUseCase(this.avatarRepository, this.logger);
this.requestAvatarGenerationUseCase = new RequestAvatarGenerationUseCase(
this.avatarGenerationRepository,
this.faceValidation,
this.avatarGeneration,
this.logger
);
this.selectAvatarUseCase = new SelectAvatarUseCase(this.avatarGenerationRepository, this.logger);
this.getUploadedMediaUseCase = new GetUploadedMediaUseCase(this.mediaStorage);
this.deleteMediaUseCase = new DeleteMediaUseCase(this.mediaRepository, this.mediaStorage, this.logger);
this.uploadMediaUseCase = new UploadMediaUseCase(this.mediaRepository, this.mediaStorage, this.logger);
this.getMediaUseCase = new GetMediaUseCase(this.mediaRepository, this.logger);
}
public static create(): MediaTestContext {
return new MediaTestContext();
}
public reset(): void {
this.avatarRepository.clear();
this.avatarGenerationRepository.clear();
this.mediaRepository.clear();
this.mediaStorage.clear();
this.eventPublisher.clear();
}
}