import { DynamicModule } from "@nestjs/common"; import { REDIS_CONFIG } from "./constants"; import { RedisModuleInitializationException } from "./exceptions"; import { AsyncModuleOptions, RedisModule, RedisModuleOptions } from "./redis.module"; import { RedisService } from "./redis.service"; describe(RedisModule, () => { describe(RedisModule.register, () => { it('returns a dynamic module', () => { const opts: RedisModuleOptions = { url: 'someurl' }; expect(RedisModule.register(opts)).toStrictEqual(expect.objectContaining({ module: RedisModule, providers: [ { provide: REDIS_CONFIG, useValue: opts }, RedisService, ], exports: [ RedisService ], })); }); }); describe(RedisModule.registerAsync, () => { it('returns a dynamic module with config registered asynchronously', () => { const factory = () => ({ url: 'redis' }); const mockImport: DynamicModule = { module: RedisModule }; const opts: AsyncModuleOptions = { inject: ['foo', 'bar'], useFactory: factory, imports: [mockImport], } expect(RedisModule.registerAsync(opts)).toStrictEqual(expect.objectContaining({ module: RedisModule, imports: opts.imports, providers: [ { provide: REDIS_CONFIG, useFactory: factory, inject: opts.inject }, RedisService, ], exports: [RedisService] })); }); it('throws RedisModuleInitializationException if useFactory is not provided', () => { expect(() => RedisModule.registerAsync({})).toThrow(expect.any(RedisModuleInitializationException)); }); }); });