ngx-testing-tools
Version:
Makes Angular testing easier
39 lines • 5.55 kB
JavaScript
import { buildJasmineCallback } from '../common/jasmine/jasmine-callback';
import { mergeBaseFactory } from '../common/test-beds/base/merge-base-factory';
import { ServiceTestBedFactory } from './service-test-bed-factory';
/**
* Creates a new `ServiceTestBed` to configure the custom test bed and wrap the assertion test.
* @param rootService - The described Service.
* @param options
*/
export function serviceTestBed(rootService, options = {}) {
const factory = new ServiceTestBedFactory(rootService, options);
const { httpTesting, verifyHttp: defaultVerifyHttp, } = factory['httpOptions'];
const tb = ((assertion, opts = {}) => {
const { verifyHttp = defaultVerifyHttp } = opts;
return buildJasmineCallback({
callback: assertion,
deferredTools: factory['deferredTools'],
postTest: (tools) => {
if (httpTesting && verifyHttp)
tools.http.controller.verify();
tools.rx['cleanAll']();
},
});
});
return mergeBaseFactory(factory, tb);
}
/**
* Only invokes the "should create" test.
*
* To be used when there are no noticeable or relevant tests to be performed on this service.
*
* The usage of this function and `serviceTestBed` function must be mutually exclusive.
*
* @param rootService - The described Service.
* @param options
*/
export function itShouldCreateService(rootService, options) {
serviceTestBed(rootService, options);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS10ZXN0LWJlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZXN0aW5nLXRvb2xzL3NyYy9saWIvc2VydmljZS10ZXN0LWJlZC9zZXJ2aWNlLXRlc3QtYmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRy9FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRW5FOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFJLFdBQW9CLEVBQUUsVUFBaUMsRUFBRTtJQUN6RixNQUFNLE9BQU8sR0FBRyxJQUFJLHFCQUFxQixDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUVoRSxNQUFNLEVBQ0osV0FBVyxFQUNYLFVBQVUsRUFBRSxpQkFBaUIsR0FDOUIsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFM0IsTUFBTSxFQUFFLEdBQXNCLENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxFQUFFO1FBQ3RELE1BQU0sRUFBRSxVQUFVLEdBQUcsaUJBQWlCLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFFaEQsT0FBTyxvQkFBb0IsQ0FBQztZQUMxQixRQUFRLEVBQUUsU0FBUztZQUNuQixhQUFhLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQztZQUN2QyxRQUFRLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDbEIsSUFBSSxXQUFXLElBQUksVUFBVTtvQkFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDOUQsS0FBSyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3pCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDLENBQXNCLENBQUM7SUFFeEIsT0FBTyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDdkMsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBSSxXQUFvQixFQUFFLE9BQXNDO0lBQ25HLGNBQWMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDdkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGJ1aWxkSmFzbWluZUNhbGxiYWNrIH0gZnJvbSAnLi4vY29tbW9uL2phc21pbmUvamFzbWluZS1jYWxsYmFjayc7XG5pbXBvcnQgeyBtZXJnZUJhc2VGYWN0b3J5IH0gZnJvbSAnLi4vY29tbW9uL3Rlc3QtYmVkcy9iYXNlL21lcmdlLWJhc2UtZmFjdG9yeSc7XG5pbXBvcnQgeyBQaXBlVGVzdEJlZE9wdGlvbnMgfSBmcm9tICcuLi9waXBlLXRlc3QtYmVkJztcbmltcG9ydCB7IFNlcnZpY2VUZXN0QmVkLCBTZXJ2aWNlVGVzdEJlZE9wdGlvbnMgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBTZXJ2aWNlVGVzdEJlZEZhY3RvcnkgfSBmcm9tICcuL3NlcnZpY2UtdGVzdC1iZWQtZmFjdG9yeSc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBgU2VydmljZVRlc3RCZWRgIHRvIGNvbmZpZ3VyZSB0aGUgY3VzdG9tIHRlc3QgYmVkIGFuZCB3cmFwIHRoZSBhc3NlcnRpb24gdGVzdC5cbiAqIEBwYXJhbSByb290U2VydmljZSAtIFRoZSBkZXNjcmliZWQgU2VydmljZS5cbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJ2aWNlVGVzdEJlZDxUPihyb290U2VydmljZTogVHlwZTxUPiwgb3B0aW9uczogU2VydmljZVRlc3RCZWRPcHRpb25zID0ge30pOiBTZXJ2aWNlVGVzdEJlZDxUPiB7XG4gIGNvbnN0IGZhY3RvcnkgPSBuZXcgU2VydmljZVRlc3RCZWRGYWN0b3J5KHJvb3RTZXJ2aWNlLCBvcHRpb25zKTtcblxuICBjb25zdCB7XG4gICAgaHR0cFRlc3RpbmcsXG4gICAgdmVyaWZ5SHR0cDogZGVmYXVsdFZlcmlmeUh0dHAsXG4gIH0gPSBmYWN0b3J5WydodHRwT3B0aW9ucyddO1xuXG4gIGNvbnN0IHRiOiBTZXJ2aWNlVGVzdEJlZDxUPiA9ICgoYXNzZXJ0aW9uLCBvcHRzID0ge30pID0+IHtcbiAgICBjb25zdCB7IHZlcmlmeUh0dHAgPSBkZWZhdWx0VmVyaWZ5SHR0cCB9ID0gb3B0cztcblxuICAgIHJldHVybiBidWlsZEphc21pbmVDYWxsYmFjayh7XG4gICAgICBjYWxsYmFjazogYXNzZXJ0aW9uLFxuICAgICAgZGVmZXJyZWRUb29sczogZmFjdG9yeVsnZGVmZXJyZWRUb29scyddLFxuICAgICAgcG9zdFRlc3Q6ICh0b29scykgPT4ge1xuICAgICAgICBpZiAoaHR0cFRlc3RpbmcgJiYgdmVyaWZ5SHR0cCkgdG9vbHMuaHR0cC5jb250cm9sbGVyLnZlcmlmeSgpO1xuICAgICAgICB0b29scy5yeFsnY2xlYW5BbGwnXSgpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfSkgYXMgU2VydmljZVRlc3RCZWQ8VD47XG5cbiAgcmV0dXJuIG1lcmdlQmFzZUZhY3RvcnkoZmFjdG9yeSwgdGIpO1xufVxuXG4vKipcbiAqIE9ubHkgaW52b2tlcyB0aGUgXCJzaG91bGQgY3JlYXRlXCIgdGVzdC5cbiAqXG4gKiBUbyBiZSB1c2VkIHdoZW4gdGhlcmUgYXJlIG5vIG5vdGljZWFibGUgb3IgcmVsZXZhbnQgdGVzdHMgdG8gYmUgcGVyZm9ybWVkIG9uIHRoaXMgc2VydmljZS5cbiAqXG4gKiBUaGUgdXNhZ2Ugb2YgdGhpcyBmdW5jdGlvbiBhbmQgYHNlcnZpY2VUZXN0QmVkYCBmdW5jdGlvbiBtdXN0IGJlIG11dHVhbGx5IGV4Y2x1c2l2ZS5cbiAqXG4gKiBAcGFyYW0gcm9vdFNlcnZpY2UgLSBUaGUgZGVzY3JpYmVkIFNlcnZpY2UuXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXRTaG91bGRDcmVhdGVTZXJ2aWNlPFQ+KHJvb3RTZXJ2aWNlOiBUeXBlPFQ+LCBvcHRpb25zPzogSXRTaG91bGRDcmVhdGVTZXJ2aWNlT3B0aW9ucyk6IHZvaWQge1xuICBzZXJ2aWNlVGVzdEJlZChyb290U2VydmljZSwgb3B0aW9ucyk7XG59XG5cbnR5cGUgSXRTaG91bGRDcmVhdGVTZXJ2aWNlT3B0aW9ucyA9IFBpY2s8UGlwZVRlc3RCZWRPcHRpb25zLFxuICB8ICdwcm92aWRlcnMnXG4gIHwgJ2ltcG9ydHMnXG4+XG4iXX0=