UNPKG

@rxjs-stuff/marbles

Version:

A set of plugins that provide a natural feeling integration with Mocha and Chai for RxJS "marbles" testing.

82 lines 3.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.frameConsole = exports.marblesTesting = exports.MarblesHelpers = void 0; const contextual_test_scheduler_1 = require("./contextual-test-scheduler"); const MarblesHelpersInternal = {}; class MarblesHelpersImpl { get cold() { return (marbles, marbleValues) => MarblesHelpersInternal.cold(marbles, marbleValues); } get expectObservable() { return (stream, subscriptionMarbles, context) => MarblesHelpersInternal.expectObservable(stream, subscriptionMarbles, context); } get expectSubscriptions() { return (actualSubscriptionLogs, context) => MarblesHelpersInternal.expectSubscriptions(actualSubscriptionLogs, context); } get hot() { return (marbles, marbleValues) => MarblesHelpersInternal.hot(marbles, marbleValues); } get scheduler() { return MarblesHelpersInternal.scheduler; } get helpers() { return this; } init(assertDeepEqual) { this.assertDeepEqual = assertDeepEqual; } createTestScheduler() { return new contextual_test_scheduler_1.ContextualTestScheduler(this.assertDeepEqual); } run(fn) { return MarblesHelpersInternal.scheduler.run(function () { return fn.call(this, exports.MarblesHelpers); }); } } exports.MarblesHelpers = new MarblesHelpersImpl(); function marblesTesting() { frameConsole(MarblesHelpersInternal); beforeEach(() => { const scheduler = exports.MarblesHelpers.createTestScheduler(); const cold = scheduler.createColdObservable.bind(scheduler); const hot = scheduler.createHotObservable.bind(scheduler); const expectObservable = scheduler.expectObservable.bind(scheduler); const expectSubscriptions = scheduler.expectSubscriptions.bind(scheduler); Object.assign(MarblesHelpersInternal, { cold, expectObservable, expectSubscriptions, hot, scheduler, helpers: MarblesHelpersInternal, }); }); afterEach(() => { delete MarblesHelpersInternal.cold; delete MarblesHelpersInternal.expectObservable; delete MarblesHelpersInternal.expectSubscriptions; delete MarblesHelpersInternal.hot; delete MarblesHelpersInternal.scheduler; delete MarblesHelpersInternal.helpers; }); } exports.marblesTesting = marblesTesting; function frameConsole(helpers) { const ogConsole = (() => { const { debug, log, warn, info, error, trace } = console; return { debug, log, warn, info, error, trace }; })(); function initConsole() { Object.entries(ogConsole).forEach(([name, fn]) => { console[name] = (...args) => fn.call(console, `#${helpers.scheduler.frame}`, ...args); }); } function resetConsole() { Object.entries(ogConsole).forEach(([name, fn]) => console[name] = fn); } beforeEach(initConsole); afterEach(resetConsole); } exports.frameConsole = frameConsole; //# sourceMappingURL=marbles.js.map