ngx-testing-tools
Version:
Makes Angular testing easier
39 lines • 6.59 kB
JavaScript
import { HTTP_INTERCEPTORS, withInterceptors, withInterceptorsFromDi } from '@angular/common/http';
import { assertFn } from '../common/assertions/assert-fn';
import { assertInterceptorCtor } from '../common/assertions/assert-interceptor-ctor';
import { BaseTestBedFactory } from '../common/test-beds/base/base-test-bed-factory';
import { httpProviders } from '../common/tools/http/http-providers';
import { isConstructor } from '../common/utils/constructor.util';
import { INTERCEPTOR_INFO } from './proxy/interceptor-info.token';
import { InterceptorProxy } from './proxy/interceptor-proxy';
import { buildInterceptorTools } from './tools/interceptor-tools';
export class InterceptorTestBedFactory extends BaseTestBedFactory {
constructor(rootInterceptor, options) {
const isRootCtor = isConstructor(rootInterceptor);
if (isRootCtor)
assertInterceptorCtor(rootInterceptor);
else
assertFn(rootInterceptor);
super(InterceptorProxy, options);
this.deferredTools = () => buildInterceptorTools(this);
this.provide([
InterceptorProxy,
{ provide: INTERCEPTOR_INFO, useValue: { rootInterceptor, isRootCtor } },
]);
if (isRootCtor) {
this.provide([
rootInterceptor,
{ provide: HTTP_INTERCEPTORS, useClass: rootInterceptor, multi: true },
httpProviders(withInterceptorsFromDi()),
]);
}
else {
this.provide(httpProviders(withInterceptors([rootInterceptor])));
}
}
async compile() {
await super.compile();
this.injectDescribed();
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJjZXB0b3ItdGVzdC1iZWQtZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZXN0aW5nLXRvb2xzL3NyYy9saWIvaW50ZXJjZXB0b3ItdGVzdC1iZWQvaW50ZXJjZXB0b3ItdGVzdC1iZWQtZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQXFCLGdCQUFnQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFdEgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFakUsT0FBTyxFQUFFLGdCQUFnQixFQUFtQixNQUFNLGdDQUFnQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRWxFLE1BQU0sT0FBTyx5QkFHWCxTQUFRLGtCQUFpRztJQUV6RyxZQUNFLGVBQTBELEVBQzFELE9BQWtDO1FBRWxDLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNsRCxJQUFJLFVBQVU7WUFBRSxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsQ0FBQzs7WUFDbEQsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRS9CLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsQ0FBQztRQW1CaEIsa0JBQWEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQWpCbkUsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNYLGdCQUFnQjtZQUNoQixFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFxQixFQUFFO1NBQzVGLENBQUMsQ0FBQztRQUVILElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUNYLGVBQWU7Z0JBQ2YsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2dCQUN0RSxhQUFhLENBQUMsc0JBQXNCLEVBQUUsQ0FBQzthQUN4QyxDQUFDLENBQUM7UUFDTCxDQUFDO2FBQ0ksQ0FBQztZQUNKLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkUsQ0FBQztJQUNILENBQUM7SUFJZSxLQUFLLENBQUMsT0FBTztRQUMzQixNQUFNLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSFRUUF9JTlRFUkNFUFRPUlMsIEh0dHBJbnRlcmNlcHRvckZuLCB3aXRoSW50ZXJjZXB0b3JzLCB3aXRoSW50ZXJjZXB0b3JzRnJvbURpIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYXNzZXJ0Rm4gfSBmcm9tICcuLi9jb21tb24vYXNzZXJ0aW9ucy9hc3NlcnQtZm4nO1xuaW1wb3J0IHsgYXNzZXJ0SW50ZXJjZXB0b3JDdG9yIH0gZnJvbSAnLi4vY29tbW9uL2Fzc2VydGlvbnMvYXNzZXJ0LWludGVyY2VwdG9yLWN0b3InO1xuaW1wb3J0IHsgQmFzZVRlc3RCZWRGYWN0b3J5IH0gZnJvbSAnLi4vY29tbW9uL3Rlc3QtYmVkcy9iYXNlL2Jhc2UtdGVzdC1iZWQtZmFjdG9yeSc7XG5pbXBvcnQgeyBodHRwUHJvdmlkZXJzIH0gZnJvbSAnLi4vY29tbW9uL3Rvb2xzL2h0dHAvaHR0cC1wcm92aWRlcnMnO1xuaW1wb3J0IHsgSW5qZWN0aW9uU3RvcmUgfSBmcm9tICcuLi9jb21tb24vdG9vbHMvc3RvcmUvbW9kZWxzL2luamVjdGVkLXN0b3JlLm1vZGVsJztcbmltcG9ydCB7IGlzQ29uc3RydWN0b3IgfSBmcm9tICcuLi9jb21tb24vdXRpbHMvY29uc3RydWN0b3IudXRpbCc7XG5pbXBvcnQgeyBJbnRlcmNlcHRvclRlc3RCZWRPcHRpb25zIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgSU5URVJDRVBUT1JfSU5GTywgSW50ZXJjZXB0b3JJbmZvIH0gZnJvbSAnLi9wcm94eS9pbnRlcmNlcHRvci1pbmZvLnRva2VuJztcbmltcG9ydCB7IEludGVyY2VwdG9yUHJveHkgfSBmcm9tICcuL3Byb3h5L2ludGVyY2VwdG9yLXByb3h5JztcbmltcG9ydCB7IEludGVyY2VwdG9yVG9vbHMgfSBmcm9tICcuL3Rvb2xzJztcbmltcG9ydCB7IGJ1aWxkSW50ZXJjZXB0b3JUb29scyB9IGZyb20gJy4vdG9vbHMvaW50ZXJjZXB0b3ItdG9vbHMnO1xuXG5leHBvcnQgY2xhc3MgSW50ZXJjZXB0b3JUZXN0QmVkRmFjdG9yeTxcbiAgSW50ZXJjZXB0b3JUeXBlLFxuICBTdG9yZSBleHRlbmRzIEluamVjdGlvblN0b3JlID0gSW5qZWN0aW9uU3RvcmVcbj4gZXh0ZW5kcyBCYXNlVGVzdEJlZEZhY3Rvcnk8SW50ZXJjZXB0b3JQcm94eSwgU3RvcmUsIEludGVyY2VwdG9yVG9vbHM8SW50ZXJjZXB0b3JUeXBlLCBTdG9yZVsnaW5qZWN0ZWQnXT4+IHtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcm9vdEludGVyY2VwdG9yOiBUeXBlPEludGVyY2VwdG9yVHlwZT4gfCBIdHRwSW50ZXJjZXB0b3JGbixcbiAgICBvcHRpb25zOiBJbnRlcmNlcHRvclRlc3RCZWRPcHRpb25zLFxuICApIHtcbiAgICBjb25zdCBpc1Jvb3RDdG9yID0gaXNDb25zdHJ1Y3Rvcihyb290SW50ZXJjZXB0b3IpO1xuICAgIGlmIChpc1Jvb3RDdG9yKSBhc3NlcnRJbnRlcmNlcHRvckN0b3Iocm9vdEludGVyY2VwdG9yKTtcbiAgICBlbHNlIGFzc2VydEZuKHJvb3RJbnRlcmNlcHRvcik7XG5cbiAgICBzdXBlcihJbnRlcmNlcHRvclByb3h5LCBvcHRpb25zKTtcblxuICAgIHRoaXMucHJvdmlkZShbXG4gICAgICBJbnRlcmNlcHRvclByb3h5LFxuICAgICAgeyBwcm92aWRlOiBJTlRFUkNFUFRPUl9JTkZPLCB1c2VWYWx1ZTogeyByb290SW50ZXJjZXB0b3IsIGlzUm9vdEN0b3IgfSBhcyBJbnRlcmNlcHRvckluZm8gfSxcbiAgICBdKTtcblxuICAgIGlmIChpc1Jvb3RDdG9yKSB7XG4gICAgICB0aGlzLnByb3ZpZGUoW1xuICAgICAgICByb290SW50ZXJjZXB0b3IsXG4gICAgICAgIHsgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsIHVzZUNsYXNzOiByb290SW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlIH0sXG4gICAgICAgIGh0dHBQcm92aWRlcnMod2l0aEludGVyY2VwdG9yc0Zyb21EaSgpKSxcbiAgICAgIF0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMucHJvdmlkZShodHRwUHJvdmlkZXJzKHdpdGhJbnRlcmNlcHRvcnMoW3Jvb3RJbnRlcmNlcHRvcl0pKSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGRlZmVycmVkVG9vbHMgPSAoKSA9PiBidWlsZEludGVyY2VwdG9yVG9vbHModGhpcyk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIGNvbXBpbGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgc3VwZXIuY29tcGlsZSgpO1xuICAgIHRoaXMuaW5qZWN0RGVzY3JpYmVkKCk7XG4gIH1cbn1cbiJdfQ==