@nestjs/testing
Advanced tools
Comparing version 9.4.3 to 10.0.0
@@ -1,2 +0,2 @@ | ||
import { InstanceToken } from '@nestjs/core/injector/module'; | ||
export type MockFactory = (token?: InstanceToken) => any; | ||
import { InjectionToken } from '@nestjs/common'; | ||
export type MockFactory = (token?: InjectionToken) => any; |
{ | ||
"name": "@nestjs/testing", | ||
"version": "9.4.3", | ||
"version": "10.0.0", | ||
"description": "Nest - modern, fast, powerful node.js web framework (@testing)", | ||
@@ -24,6 +24,6 @@ "author": "Kamil Mysliwiec", | ||
"peerDependencies": { | ||
"@nestjs/common": "^9.0.0", | ||
"@nestjs/core": "^9.0.0", | ||
"@nestjs/microservices": "^9.0.0", | ||
"@nestjs/platform-express": "^9.0.0" | ||
"@nestjs/common": "^10.0.0", | ||
"@nestjs/core": "^10.0.0", | ||
"@nestjs/microservices": "^10.0.0", | ||
"@nestjs/platform-express": "^10.0.0" | ||
}, | ||
@@ -30,0 +30,0 @@ "peerDependenciesMeta": { |
@@ -11,3 +11,3 @@ "use strict"; | ||
} | ||
exports.Test = Test; | ||
Test.metadataScanner = new metadata_scanner_1.MetadataScanner(); | ||
exports.Test = Test; |
import { LoggerService, ModuleMetadata } from '@nestjs/common'; | ||
import { NestApplicationContextOptions } from '@nestjs/common/interfaces/nest-application-context-options.interface'; | ||
import { MetadataScanner } from '@nestjs/core/metadata-scanner'; | ||
import { ModuleDefinition } from '../core/interfaces/module-definition.interface'; | ||
import { MockFactory, OverrideBy } from './interfaces'; | ||
import { OverrideModule } from './interfaces/override-module.interface'; | ||
import { TestingModule } from './testing-module'; | ||
@@ -14,2 +16,3 @@ /** | ||
private readonly overloadsMap; | ||
private readonly moduleOverloadsMap; | ||
private readonly module; | ||
@@ -26,2 +29,3 @@ private testingLogger; | ||
overrideProvider<T = any>(typeOrToken: T): OverrideBy; | ||
overrideModule(moduleToOverride: ModuleDefinition): OverrideModule; | ||
compile(options?: Pick<NestApplicationContextOptions, 'snapshot' | 'preview'>): Promise<TestingModule>; | ||
@@ -31,2 +35,3 @@ private override; | ||
private applyOverloadsMap; | ||
private getModuleOverloads; | ||
private getRootModule; | ||
@@ -33,0 +38,0 @@ private createInstancesOfDependencies; |
@@ -24,2 +24,3 @@ "use strict"; | ||
this.overloadsMap = new Map(); | ||
this.moduleOverloadsMap = new Map(); | ||
this.module = this.createModule(metadata); | ||
@@ -50,6 +51,14 @@ } | ||
} | ||
overrideModule(moduleToOverride) { | ||
return { | ||
useModule: newModule => { | ||
this.moduleOverloadsMap.set(moduleToOverride, newModule); | ||
return this; | ||
}, | ||
}; | ||
} | ||
async compile(options = {}) { | ||
this.applyLogger(); | ||
let graphInspector; | ||
if (options === null || options === void 0 ? void 0 : options.snapshot) { | ||
if (options?.snapshot) { | ||
graphInspector = new graph_inspector_1.GraphInspector(this.container); | ||
@@ -63,3 +72,5 @@ uuid_factory_1.UuidFactory.mode = uuid_factory_1.UuidFactoryMode.Deterministic; | ||
const scanner = new scanner_1.DependenciesScanner(this.container, this.metadataScanner, graphInspector, this.applicationConfig); | ||
await scanner.scan(this.module); | ||
await scanner.scan(this.module, { | ||
overrides: this.getModuleOverloads(), | ||
}); | ||
this.applyOverloadsMap(); | ||
@@ -73,3 +84,6 @@ await this.createInstancesOfDependencies(graphInspector, options); | ||
const addOverload = (options) => { | ||
this.overloadsMap.set(typeOrToken, Object.assign(Object.assign({}, options), { isProvider })); | ||
this.overloadsMap.set(typeOrToken, { | ||
...options, | ||
isProvider, | ||
}); | ||
return this; | ||
@@ -82,3 +96,3 @@ }; | ||
useValue: value => add({ useValue: value }), | ||
useFactory: (options) => add(Object.assign(Object.assign({}, options), { useFactory: options.factory })), | ||
useFactory: (options) => add({ ...options, useFactory: options.factory }), | ||
useClass: metatype => add({ useClass: metatype }), | ||
@@ -88,6 +102,14 @@ }; | ||
applyOverloadsMap() { | ||
[...this.overloadsMap.entries()].forEach(([item, options]) => { | ||
const overloads = [...this.overloadsMap.entries()]; | ||
overloads.forEach(([item, options]) => { | ||
this.container.replace(item, options); | ||
}); | ||
} | ||
getModuleOverloads() { | ||
const overloads = [...this.moduleOverloadsMap.entries()]; | ||
return overloads.map(([moduleToReplace, newModule]) => ({ | ||
moduleToReplace, | ||
newModule, | ||
})); | ||
} | ||
getRootModule() { | ||
@@ -98,5 +120,4 @@ const modules = this.container.getModules().values(); | ||
async createInstancesOfDependencies(graphInspector, options) { | ||
var _a; | ||
const injector = new testing_injector_1.TestingInjector({ | ||
preview: (_a = options === null || options === void 0 ? void 0 : options.preview) !== null && _a !== void 0 ? _a : false, | ||
preview: options?.preview ?? false, | ||
}); | ||
@@ -103,0 +124,0 @@ const instanceLoader = new testing_instance_loader_1.TestingInstanceLoader(this.container, injector, graphInspector); |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
38780
476