@hirez_io/auto-spies-core
Version:
Create automatic spies from classes in tests, also for promises and observables, used as a common code for jasmine-auto-spies and jest-auto-spies
48 lines • 2.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.mergeSubjectWithDefaultValues = void 0;
var rxjs_1 = require("rxjs");
var operators_1 = require("rxjs/operators");
function mergeSubjectWithDefaultValues(subject, valuesConfigs) {
var onCompleteSubject = new rxjs_1.ReplaySubject(1);
var results$ = (0, rxjs_1.from)(valuesConfigs).pipe(
// Add delay to "complete" if needed
(0, operators_1.concatMap)(function (valueConfig) {
if ('complete' in valueConfig && valueConfig.complete && valueConfig.delay) {
return (0, rxjs_1.of)(valueConfig).pipe((0, operators_1.delay)(valueConfig.delay));
}
return (0, rxjs_1.of)(valueConfig);
}),
// Complete if needed
(0, operators_1.takeWhile)(function (valueConfig) {
if (!('complete' in valueConfig)) {
return true;
}
if (valueConfig.complete) {
onCompleteSubject.next();
return false;
}
return true;
}),
// Handle regular values or errors
(0, operators_1.concatMap)(function (valueConfig) {
if ('value' in valueConfig && valueConfig.value) {
if (valueConfig.delay) {
return (0, rxjs_1.of)(valueConfig.value).pipe((0, operators_1.delay)(valueConfig.delay));
}
return (0, rxjs_1.of)(valueConfig.value);
}
/* istanbul ignore else */
if ('errorValue' in valueConfig && valueConfig.errorValue) {
if (valueConfig.delay) {
return (0, rxjs_1.timer)(valueConfig.delay).pipe((0, operators_1.switchMap)(function () { return (0, rxjs_1.throwError)(valueConfig.errorValue); }));
}
return (0, rxjs_1.throwError)(valueConfig.errorValue);
}
/* istanbul ignore next */
return rxjs_1.EMPTY;
}));
return (0, rxjs_1.merge)(results$, subject.pipe((0, operators_1.takeUntil)(onCompleteSubject)));
}
exports.mergeSubjectWithDefaultValues = mergeSubjectWithDefaultValues;
//# sourceMappingURL=merge-subject-with-default-values.js.map