@ngneat/spectator
Version:
A powerful tool to simplify your Angular tests
45 lines • 7.41 kB
JavaScript
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