UNPKG

@kenniy/godeye-data-contracts

Version:

Enterprise-grade base repository architecture for GOD-EYE microservices with zero overhead and maximum code reuse

202 lines (201 loc) 6.38 kB
/** * DTO Test Factory * Provides factory methods for creating test DTOs with various configurations */ import { BaseQueryDto, FindOneDto, FindManyDto, UserQueryDto, FileQueryDto } from '../../core/dto'; import { ICriteria } from '../../types/repository.types'; /** * DTO Factory - Creates DTO instances with common test configurations */ export declare class DtoFactory { /** * Creates basic query DTO with default pagination */ static createBaseQuery(overrides?: Partial<BaseQueryDto>): BaseQueryDto; /** * Creates query DTO with search configuration */ static createSearchQuery(searchTerm: string, overrides?: Partial<BaseQueryDto>): BaseQueryDto; /** * Creates query DTO with sorting */ static createSortedQuery(sortConfig?: string, overrides?: Partial<BaseQueryDto>): BaseQueryDto; /** * Creates query DTO with relations/includes */ static createIncludeQuery(include?: string, overrides?: Partial<BaseQueryDto>): BaseQueryDto; /** * Creates FindOne DTO */ static createFindOneDto(overrides?: Partial<FindOneDto>): FindOneDto; /** * Creates FindMany DTO with pagination */ static createFindManyDto(overrides?: Partial<FindManyDto>): FindManyDto; /** * Creates User-specific query DTO */ static createUserQuery(overrides?: Partial<UserQueryDto>): UserQueryDto; /** * Creates business user query DTO */ static createBusinessUserQuery(overrides?: Partial<UserQueryDto>): UserQueryDto; /** * Creates admin user query DTO */ static createAdminUserQuery(overrides?: Partial<UserQueryDto>): UserQueryDto; /** * Creates user query with date filtering */ static createUserQueryWithDateRange(createdAfter?: string, createdBefore?: string, overrides?: Partial<UserQueryDto>): UserQueryDto; /** * Creates File query DTO */ static createFileQuery(overrides?: Partial<FileQueryDto>): FileQueryDto; /** * Creates file query for specific user */ static createUserFileQuery(userId: string, overrides?: Partial<FileQueryDto>): FileQueryDto; /** * Creates file query with size filtering */ static createFileSizeQuery(minSize?: number, maxSize?: number, overrides?: Partial<FileQueryDto>): FileQueryDto; /** * Creates file query for specific MIME type */ static createFileTypeQuery(mimeType: string, fileType?: string, overrides?: Partial<FileQueryDto>): FileQueryDto; } /** * DTO Builder - Fluent interface for complex DTO construction */ export declare class DtoBuilder<T extends BaseQueryDto> { protected dto: T; constructor(dtoInstance: T); static forBaseQuery(): DtoBuilder<BaseQueryDto>; static forUserQuery(): DtoBuilder<UserQueryDto>; static forFileQuery(): DtoBuilder<FileQueryDto>; static forFindOne(): DtoBuilder<FindOneDto>; static forFindMany(): DtoBuilder<FindManyDto>; /** * Configure pagination */ withPagination(page: number, limit: number): DtoBuilder<T>; /** * Configure search */ withSearch(searchTerm: string): DtoBuilder<T>; /** * Configure sorting */ withSort(sort: string): DtoBuilder<T>; /** * Configure includes/relations */ withInclude(include: string): DtoBuilder<T>; /** * Configure status filter */ withStatus(status: string): DtoBuilder<T>; /** * Configure user-specific properties (if T extends UserQueryDto) */ withUserType(userType: 'business' | 'individual' | 'admin'): DtoBuilder<T>; withEmail(email: string): DtoBuilder<T>; withVerified(verified: boolean): DtoBuilder<T>; withDateRange(createdAfter?: string, createdBefore?: string): DtoBuilder<T>; /** * Configure file-specific properties (if T extends FileQueryDto) */ withFileType(fileType: 'image' | 'document' | 'video' | 'audio'): DtoBuilder<T>; withMimeType(mimeType: string): DtoBuilder<T>; withUserId(userId: string): DtoBuilder<T>; withSizeRange(minSize?: number, maxSize?: number): DtoBuilder<T>; /** * Build the final DTO */ build(): T; /** * Build and convert to ICriteria */ buildCriteria(id?: string): ICriteria<any>; } /** * Common DTO Test Scenarios */ export declare class DtoScenarios { /** * Basic pagination scenario */ static basicPagination(): BaseQueryDto; /** * Search with pagination scenario */ static searchWithPagination(searchTerm?: string): BaseQueryDto; /** * Complex user query scenario */ static complexUserQuery(): UserQueryDto; /** * File query for images scenario */ static imageFilesQuery(): FileQueryDto; /** * Admin user query scenario */ static adminUsersQuery(): UserQueryDto; /** * Minimal query scenario */ static minimalQuery(): BaseQueryDto; /** * Large pagination scenario */ static largePagination(): BaseQueryDto; /** * Multi-sort scenario */ static multiSort(): BaseQueryDto; /** * Full includes scenario */ static fullIncludes(): UserQueryDto; /** * Date range filtering scenario */ static dateRangeQuery(): UserQueryDto; } /** * ICriteria Mock Factory - Creates mock ICriteria objects for testing */ export declare class CriteriaFactory { /** * Creates basic ICriteria with where conditions */ static createBasic(where?: any, overrides?: Partial<ICriteria<any>>): ICriteria<any>; /** * Creates ICriteria with relations */ static withRelations(relations: string[], where?: any): ICriteria<any>; /** * Creates ICriteria with sorting */ static withSort(sort: { [key: string]: 'ASC' | 'DESC'; }, where?: any): ICriteria<any>; /** * Creates ICriteria with field selection */ static withSelect(select: string[], where?: any): ICriteria<any>; /** * Creates ICriteria with search */ static withSearch(term: string, where?: any): ICriteria<any>; /** * Creates ICriteria with pagination */ static withPagination(page: number, limit: number, where?: any): ICriteria<any>; /** * Creates complete ICriteria with all options */ static createComplete(): ICriteria<any>; }