UNPKG

@ngneat/spectator

Version:

A powerful tool to simplify your Angular tests

45 lines 7.41 kB
import { HttpClient } from '@angular/common/http'; import { HttpTestingController } from '@angular/common/http/testing'; import { TestBed } from '@angular/core/testing'; import { isType } from '../types'; import { initialHttpModule } from './initial-module'; import { getDefaultHttpOptions } from './options'; import { SpectatorHttp } from './spectator-http'; import { overrideModules } from '../spectator/create-factory'; /** * @publicApi */ export function createHttpFactory(typeOrOptions) { const service = isType(typeOrOptions) ? typeOrOptions : typeOrOptions.service; const options = isType(typeOrOptions) ? getDefaultHttpOptions({ service }) : getDefaultHttpOptions(typeOrOptions); const moduleMetadata = initialHttpModule(options); beforeEach(() => { TestBed.configureTestingModule(moduleMetadata); overrideModules(options); }); afterEach(() => { if (TestBed.inject) { TestBed.inject(HttpTestingController).verify(); } else { TestBed.get(HttpTestingController).verify(); } }); return (overrides) => { const defaults = { providers: [] }; const { providers } = { ...defaults, ...overrides }; if (providers && providers.length) { providers.forEach((provider) => { TestBed.overrideProvider(provider.provide, provider); }); } /** * Back compatibility, angular under 9 version doesnt have a inject function */ if (!TestBed.inject) { return new SpectatorHttp(TestBed.get(service), TestBed.get(HttpClient), TestBed.get(HttpTestingController)); } return new SpectatorHttp(TestBed.inject(service), TestBed.inject(HttpClient), TestBed.inject(HttpTestingController)); }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVjdGF0b3Ivc3JjL2xpYi9zcGVjdGF0b3ItaHR0cC9jcmVhdGUtZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFckUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFbEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckQsT0FBTyxFQUFFLHFCQUFxQixFQUF3QixNQUFNLFdBQVcsQ0FBQztBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBWTlEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFJLGFBQWdEO0lBQ25GLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDO0lBQzlFLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNySCxNQUFNLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVsRCxVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ2QsT0FBTyxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQy9DLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQixDQUFDLENBQUMsQ0FBQztJQUVILFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDYixJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQixPQUFPLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDakQsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDOUMsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxDQUFDLFNBQWtDLEVBQUUsRUFBRTtRQUM1QyxNQUFNLFFBQVEsR0FBMkIsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDM0QsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsR0FBRyxRQUFRLEVBQUUsR0FBRyxTQUFTLEVBQUUsQ0FBQztRQUVwRCxJQUFJLFNBQVMsSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQWtCLEVBQUUsRUFBRTtnQkFDdkMsT0FBTyxDQUFDLGdCQUFnQixDQUFFLFFBQWdCLENBQUMsT0FBTyxFQUFFLFFBQWUsQ0FBQyxDQUFDO1lBQ3ZFLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVEOztXQUVHO1FBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQixPQUFPLElBQUksYUFBYSxDQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQztRQUNqSCxDQUFDO1FBRUQsT0FBTyxJQUFJLGFBQWEsQ0FBSSxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7SUFDMUgsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBIdHRwVGVzdGluZ0NvbnRyb2xsZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cC90ZXN0aW5nJztcbmltcG9ydCB7IFByb3ZpZGVyLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZXN0QmVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcblxuaW1wb3J0IHsgQmFzZVNwZWN0YXRvck92ZXJyaWRlcyB9IGZyb20gJy4uL2Jhc2Uvb3B0aW9ucyc7XG5pbXBvcnQgeyBpc1R5cGUgfSBmcm9tICcuLi90eXBlcyc7XG5cbmltcG9ydCB7IGluaXRpYWxIdHRwTW9kdWxlIH0gZnJvbSAnLi9pbml0aWFsLW1vZHVsZSc7XG5pbXBvcnQgeyBnZXREZWZhdWx0SHR0cE9wdGlvbnMsIFNwZWN0YXRvckh0dHBPcHRpb25zIH0gZnJvbSAnLi9vcHRpb25zJztcbmltcG9ydCB7IFNwZWN0YXRvckh0dHAgfSBmcm9tICcuL3NwZWN0YXRvci1odHRwJztcbmltcG9ydCB7IG92ZXJyaWRlTW9kdWxlcyB9IGZyb20gJy4uL3NwZWN0YXRvci9jcmVhdGUtZmFjdG9yeSc7XG5cbi8qKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgdHlwZSBTcGVjdGF0b3JIdHRwRmFjdG9yeTxTPiA9IChvdmVycmlkZXM/OiBDcmVhdGVIdHRwT3ZlcnJpZGVzPFM+KSA9PiBTcGVjdGF0b3JIdHRwPFM+O1xuXG4vKipcbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVIdHRwT3ZlcnJpZGVzPFM+IGV4dGVuZHMgQmFzZVNwZWN0YXRvck92ZXJyaWRlcyB7fVxuXG4vKipcbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUh0dHBGYWN0b3J5PFM+KHR5cGVPck9wdGlvbnM6IFR5cGU8Uz4gfCBTcGVjdGF0b3JIdHRwT3B0aW9uczxTPik6IFNwZWN0YXRvckh0dHBGYWN0b3J5PFM+IHtcbiAgY29uc3Qgc2VydmljZSA9IGlzVHlwZSh0eXBlT3JPcHRpb25zKSA/IHR5cGVPck9wdGlvbnMgOiB0eXBlT3JPcHRpb25zLnNlcnZpY2U7XG4gIGNvbnN0IG9wdGlvbnMgPSBpc1R5cGUodHlwZU9yT3B0aW9ucykgPyBnZXREZWZhdWx0SHR0cE9wdGlvbnM8Uz4oeyBzZXJ2aWNlIH0pIDogZ2V0RGVmYXVsdEh0dHBPcHRpb25zKHR5cGVPck9wdGlvbnMpO1xuICBjb25zdCBtb2R1bGVNZXRhZGF0YSA9IGluaXRpYWxIdHRwTW9kdWxlKG9wdGlvbnMpO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIFRlc3RCZWQuY29uZmlndXJlVGVzdGluZ01vZHVsZShtb2R1bGVNZXRhZGF0YSk7XG4gICAgb3ZlcnJpZGVNb2R1bGVzKG9wdGlvbnMpO1xuICB9KTtcblxuICBhZnRlckVhY2goKCkgPT4ge1xuICAgIGlmIChUZXN0QmVkLmluamVjdCkge1xuICAgICAgVGVzdEJlZC5pbmplY3QoSHR0cFRlc3RpbmdDb250cm9sbGVyKS52ZXJpZnkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgVGVzdEJlZC5nZXQoSHR0cFRlc3RpbmdDb250cm9sbGVyKS52ZXJpZnkoKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiAob3ZlcnJpZGVzPzogQ3JlYXRlSHR0cE92ZXJyaWRlczxTPikgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRzOiBDcmVhdGVIdHRwT3ZlcnJpZGVzPFM+ID0geyBwcm92aWRlcnM6IFtdIH07XG4gICAgY29uc3QgeyBwcm92aWRlcnMgfSA9IHsgLi4uZGVmYXVsdHMsIC4uLm92ZXJyaWRlcyB9O1xuXG4gICAgaWYgKHByb3ZpZGVycyAmJiBwcm92aWRlcnMubGVuZ3RoKSB7XG4gICAgICBwcm92aWRlcnMuZm9yRWFjaCgocHJvdmlkZXI6IFByb3ZpZGVyKSA9PiB7XG4gICAgICAgIFRlc3RCZWQub3ZlcnJpZGVQcm92aWRlcigocHJvdmlkZXIgYXMgYW55KS5wcm92aWRlLCBwcm92aWRlciBhcyBhbnkpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQmFjayBjb21wYXRpYmlsaXR5LCBhbmd1bGFyIHVuZGVyIDkgdmVyc2lvbiBkb2VzbnQgaGF2ZSBhIGluamVjdCBmdW5jdGlvblxuICAgICAqL1xuICAgIGlmICghVGVzdEJlZC5pbmplY3QpIHtcbiAgICAgIHJldHVybiBuZXcgU3BlY3RhdG9ySHR0cDxTPihUZXN0QmVkLmdldChzZXJ2aWNlKSwgVGVzdEJlZC5nZXQoSHR0cENsaWVudCksIFRlc3RCZWQuZ2V0KEh0dHBUZXN0aW5nQ29udHJvbGxlcikpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgU3BlY3RhdG9ySHR0cDxTPihUZXN0QmVkLmluamVjdChzZXJ2aWNlKSwgVGVzdEJlZC5pbmplY3QoSHR0cENsaWVudCksIFRlc3RCZWQuaW5qZWN0KEh0dHBUZXN0aW5nQ29udHJvbGxlcikpO1xuICB9O1xufVxuIl19