UNPKG

vitest-marbles

Version:

Marble testing helpers library for RxJs and Jest

117 lines 5.16 kB
import { Marblizer } from '../marblizer'; function canMarblize() { var messages = []; for (var _i = 0; _i < arguments.length; _i++) { messages[_i] = arguments[_i]; } return messages.every(function (message) { return message.filter(function (_a) { var kind = _a.notification.kind; return kind === 'N'; }).every(isCharacter); }); } function isCharacter(_a) { var notification = _a.notification; var value = notification.value; return ((typeof value === 'string' && value.length === 1) || (value !== undefined && JSON.stringify(value).length === 1)); } export var customTestMatchers = { toBeNotifications: function (actual, expected) { var _this = this; var actualMarble = actual; var expectedMarble = expected; if (canMarblize(actual, expected)) { actualMarble = Marblizer.marblize(actual); expectedMarble = Marblizer.marblize(expected); } var pass = this.equals(actualMarble, expectedMarble); var message = pass ? function () { return _this.utils.matcherHint('.not.toBeNotifications') + '\n\n' + "Expected notifications to not be:\n" + " ".concat(_this.utils.printExpected(expectedMarble), "\n") + "But got:\n" + " ".concat(_this.utils.printReceived(actualMarble)); } : function () { var diffString = _this.utils.diff(expectedMarble, actualMarble, { expand: true, }); return (_this.utils.matcherHint('.toBeNotifications') + '\n\n' + "Expected notifications to be:\n" + " ".concat(_this.utils.printExpected(expectedMarble), "\n") + "But got:\n" + " ".concat(_this.utils.printReceived(actualMarble)) + (diffString ? "\n\nDifference:\n\n".concat(diffString) : '')); }; return { message: message, pass: pass }; }, toBeSubscriptions: function (actual, expected) { var _this = this; var actualMarbleArray = Marblizer.marblizeSubscriptions(actual); var expectedMarbleArray = Marblizer.marblizeSubscriptions(expected); var pass = subscriptionsPass(actualMarbleArray, expectedMarbleArray); var message = pass ? function () { return _this.utils.matcherHint('.not.toHaveSubscriptions') + '\n\n' + "Expected observable to not have the following subscription points:\n" + " ".concat(_this.utils.printExpected(expectedMarbleArray), "\n") + "But got:\n" + " ".concat(_this.utils.printReceived(actualMarbleArray)); } : function () { var diffString = _this.utils.diff(expectedMarbleArray, actualMarbleArray, { expand: true, }); return (_this.utils.matcherHint('.toHaveSubscriptions') + '\n\n' + "Expected observable to have the following subscription points:\n" + " ".concat(_this.utils.printExpected(expectedMarbleArray), "\n") + "But got:\n" + " ".concat(_this.utils.printReceived(actualMarbleArray)) + (diffString ? "\n\nDifference:\n\n".concat(diffString) : '')); }; return { message: message, pass: pass }; }, toHaveEmptySubscriptions: function (actual) { var _this = this; var pass = !(actual && actual.length > 0); var marbles; if (actual && actual.length > 0) { marbles = Marblizer.marblizeSubscriptions(actual); } var message = pass ? function () { return _this.utils.matcherHint('.not.toHaveNoSubscriptions') + '\n\n' + "Expected observable to have at least one subscription point, but got nothing" + _this.utils.printReceived(''); } : function () { return _this.utils.matcherHint('.toHaveNoSubscriptions') + '\n\n' + "Expected observable to have no subscription points\n" + "But got:\n" + " ".concat(_this.utils.printReceived(marbles), "\n\n"); }; return { message: message, pass: pass }; }, }; function subscriptionsPass(actualMarbleArray, expectedMarbleArray) { if (actualMarbleArray.length !== expectedMarbleArray.length) { return false; } var pass = true; for (var _i = 0, actualMarbleArray_1 = actualMarbleArray; _i < actualMarbleArray_1.length; _i++) { var actualMarble = actualMarbleArray_1[_i]; if (!expectedMarbleArray.includes(actualMarble)) { pass = false; break; } } return pass; } expect.extend(customTestMatchers); //# sourceMappingURL=custom-matchers.js.map