UNPKG

vitest-marbles

Version:

Marble testing helpers library for RxJs and Jest

61 lines 2.6 kB
import { MarblesGlossary } from './marbles-glossary'; import { NotificationEvent } from './notification-event'; import { NotificationKindChars, ValueLiteral } from './notification-kind'; var frameStep = 10; var Marblizer = /** @class */ (function () { function Marblizer() { } Marblizer.marblize = function (messages) { var emissions = Marblizer.getNotificationEvents(messages); var marbles = ''; for (var i = 0, prevEndFrame = 0; i < emissions.length; prevEndFrame = emissions[i].end, i++) { marbles = "".concat(marbles).concat(MarblesGlossary.TimeFrame.repeat(emissions[i].start - prevEndFrame) + emissions[i].marbles); } return marbles; }; Marblizer.marblizeSubscriptions = function (logs) { var _this = this; return logs.map(function (log) { return _this.marblizeLogEntry(log.subscribedFrame / frameStep, MarblesGlossary.Subscription) + _this.marblizeLogEntry((log.unsubscribedFrame - log.subscribedFrame) / frameStep - 1, MarblesGlossary.Unsubscription); }); }; Marblizer.marblizeLogEntry = function (logPoint, symbol) { if (logPoint !== Infinity) { return MarblesGlossary.TimeFrame.repeat(logPoint) + symbol; } else { return ''; } }; Marblizer.getNotificationEvents = function (messages) { var framesToEmissions = messages.reduce(function (result, message) { if (!result[message.frame]) { result[message.frame] = new NotificationEvent(message.frame / frameStep); } var event = result[message.frame]; event.marbles += Marblizer.extractMarble(message); return result; }, {}); var events = Object.keys(framesToEmissions).map(function (frame) { return framesToEmissions[frame]; }); Marblizer.encloseGroupEvents(events); return events; }; Marblizer.extractMarble = function (message) { var marble = NotificationKindChars[message.notification.kind]; if (marble === ValueLiteral) marble = message.notification.value; return marble; }; Marblizer.encloseGroupEvents = function (events) { events.forEach(function (event) { if (event.marbles.length > 1) { event.marbles = "".concat(MarblesGlossary.GroupStart).concat(event.marbles).concat(MarblesGlossary.GroupEnd); } }); }; return Marblizer; }()); export { Marblizer }; //# sourceMappingURL=marblizer.js.map