unexpected-eventemitter
Version:
EventEmitter assertions for Unexpected
125 lines (107 loc) • 12 kB
JavaScript
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.unexpectedEventEmitter = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
module.exports={
"version": "2.4.0"
}
},{}],2:[function(require,module,exports){
;
var ref = require('../package.json');
var version = ref.version;
module.exports = {
name: 'unexpected-eventemitter',
version: version,
installInto: function installInto(expect) {
expect.addType({
base: 'object',
name: 'EventEmitter',
identify: function (obj) { return obj !== null &&
typeof obj === 'object' &&
typeof obj.emit === 'function' &&
typeof obj.once === 'function' &&
typeof obj.on === 'function'; },
});
var toEmitFrom = function (expect, subject, ee, eventName) {
var values = [], len = arguments.length - 4;
while ( len-- > 0 ) values[ len ] = arguments[ len + 4 ];
var emitted = false;
var emittedValues;
var onEvent = function () {
var values = [], len = arguments.length;
while ( len-- ) values[ len ] = arguments[ len ];
emitted = true;
emittedValues = values;
};
ee.once(eventName, onEvent);
return expect
.promise(function () {
expect.errorMode = 'bubble';
return expect(subject, 'to be fulfilled');
})
.then(function () {
expect.errorMode = 'default';
expect(emitted, '[not] to be true');
expect.errorMode = 'nested';
values.forEach(function (value, idx) {
expect(emittedValues[idx], '[not] to satisfy', value);
});
})
.finally(function () {
ee.removeListener(eventName, onEvent);
});
};
var toEmitWithErrorFrom = function (
expect,
subject,
error,
ee,
eventName
) {
var values = [], len = arguments.length - 5;
while ( len-- > 0 ) values[ len ] = arguments[ len + 5 ];
var emitted = false;
var emittedValues;
var onEvent = function () {
var values = [], len = arguments.length;
while ( len-- ) values[ len ] = arguments[ len ];
emitted = true;
emittedValues = values;
};
ee.once(eventName, onEvent);
return expect
.promise(function () {
expect.errorMode = 'bubble';
return expect(subject, 'to be rejected with', error);
})
.then(function () {
expect.errorMode = 'default';
expect(emitted, 'to be true');
expect.errorMode = 'nested';
values.forEach(function (value, idx) {
expect(emittedValues[idx], 'to satisfy', value);
});
})
.finally(function () {
ee.removeListener(eventName, onEvent);
});
};
expect
.addAssertion(
'<function> [not] to emit from <EventEmitter> <string> <any*>',
toEmitFrom
)
.addAssertion(
'<Promise> [not] to emit from <EventEmitter> <string> <any*>',
toEmitFrom
)
.addAssertion(
'<function> to emit with error from <Error> <EventEmitter> <string> <any*>',
toEmitWithErrorFrom
)
.addAssertion(
'<Promise> to emit with error from <Error> <EventEmitter> <string> <any*>',
toEmitWithErrorFrom
);
},
};
},{"../package.json":1}]},{},[2])(2)
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJwYWNrYWdlLmpzb24iLCIvVXNlcnMvYm9uZXNrdWxsL3Byb2plY3RzL2JvbmVza3VsbC91bmV4cGVjdGVkLWV2ZW50ZW1pdHRlci9zcmMvdW5leHBlY3RlZC1ldmVudGVtaXR0ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUNBQTtBQUNBO0FBQ0E7O0FDRkEsWUFBWSxDQUFDOztBQUViLE9BQWUsR0FBRyxPQUFPLENBQUMsaUJBQWlCO0FBQXBDLDBCQUFzQzs7QUFFN0MsTUFBTSxDQUFDLE9BQU8sR0FBRztFQUNmLElBQUksRUFBRSx5QkFBeUI7V0FDL0IsT0FBTztFQUNQLGlDQUFXLENBQUMsTUFBTSxFQUFFO0lBQ2xCLE1BQU0sQ0FBQyxPQUFPLENBQUM7TUFDYixJQUFJLEVBQUUsUUFBUTtNQUNkLElBQUksRUFBRSxjQUFjO01BQ3BCLFFBQVEsV0FBRSxDQUFDLEdBQUcsRUFBRSxTQUNkLEdBQUcsS0FBSyxJQUFJO1FBQ1osT0FBTyxHQUFHLEtBQUssUUFBUTtRQUN2QixPQUFPLEdBQUcsQ0FBQyxJQUFJLEtBQUssVUFBVTtRQUM5QixPQUFPLEdBQUcsQ0FBQyxJQUFJLEtBQUssVUFBVTtRQUM5QixPQUFPLEdBQUcsQ0FBQyxFQUFFLEtBQUssYUFBVTtLQUMvQixDQUFDLENBQUM7O0lBRUgsR0FBSyxDQUFDLFVBQVUsWUFBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFNBQVMsQUFBVyxFQUFFLEFBQUc7OztBQUFDO01BQ2pFLEdBQUcsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO01BQ3BCLEdBQUcsQ0FBQyxhQUFhLENBQUM7O01BRWxCLEdBQUssQ0FBQyxPQUFPLFlBQUcsQ0FBQyxBQUFTLEVBQUUsQUFBRzs7O0FBQUM7UUFDOUIsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNmLGFBQWEsR0FBRyxNQUFNLENBQUM7T0FDeEIsQ0FBQzs7TUFFRixFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQzs7TUFFNUIsT0FBTyxNQUFNO1NBQ1YsT0FBTyxVQUFDLEdBQUcsQUFBRztVQUNiLE1BQU0sQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1VBQzVCLE9BQU8sTUFBTSxDQUFDLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1NBQzNDLENBQUM7U0FDRCxJQUFJLFVBQUMsR0FBRyxBQUFHO1VBQ1YsTUFBTSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7VUFDN0IsTUFBTSxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1VBQ3BDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1VBQzVCLE1BQU0sQ0FBQyxPQUFPLFVBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEFBQUc7WUFDN0IsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLENBQUMsQ0FBQztXQUN2RCxDQUFDLENBQUM7U0FDSixDQUFDO1NBQ0QsT0FBTyxVQUFDLEdBQUcsQUFBRztVQUNiLEVBQUUsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ3ZDLENBQUMsQ0FBQztLQUNOLENBQUM7O0lBRUYsR0FBSyxDQUFDLG1CQUFtQixZQUFHO01BQzFCLE1BQU07TUFDTixPQUFPO01BQ1AsS0FBSztNQUNMLEVBQUU7TUFDRixTQUFTLEFBQ0E7TUFDVCxBQUFHOzs7QUFBQztNQUNKLEdBQUcsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO01BQ3BCLEdBQUcsQ0FBQyxhQUFhLENBQUM7O01BRWxCLEdBQUssQ0FBQyxPQUFPLFlBQUcsQ0FBQyxBQUFTLEVBQUUsQUFBRzs7O0FBQUM7UUFDOUIsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNmLGFBQWEsR0FBRyxNQUFNLENBQUM7T0FDeEIsQ0FBQzs7TUFFRixFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQzs7TUFFNUIsT0FBTyxNQUFNO1NBQ1YsT0FBTyxVQUFDLEdBQUcsQUFBRztVQUNiLE1BQU0sQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1VBQzVCLE9BQU8sTUFBTSxDQUFDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN0RCxDQUFDO1NBQ0QsSUFBSSxVQUFDLEdBQUcsQUFBRztVQUNWLE1BQU0sQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1VBQzdCLE1BQU0sQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7VUFDOUIsTUFBTSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7VUFDNUIsTUFBTSxDQUFDLE9BQU8sVUFBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsQUFBRztZQUM3QixNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztXQUNqRCxDQUFDLENBQUM7U0FDSixDQUFDO1NBQ0QsT0FBTyxVQUFDLEdBQUcsQUFBRztVQUNiLEVBQUUsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ3ZDLENBQUMsQ0FBQztLQUNOLENBQUM7O0lBRUYsTUFBTTtPQUNILFlBQVk7UUFDWCw4REFBOEQ7UUFDOUQsVUFBVTtPQUNYO09BQ0EsWUFBWTtRQUNYLDZEQUE2RDtRQUM3RCxVQUFVO09BQ1g7T0FDQSxZQUFZO1FBQ1gsMkVBQTJFO1FBQzNFLG1CQUFtQjtPQUNwQjtPQUNBLFlBQVk7UUFDWCwwRUFBMEU7UUFDMUUsbUJBQW1CO09BQ3BCLENBQUM7R0FDTDtDQUNGLENBQUMiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbigpe2Z1bmN0aW9uIHIoZSxuLHQpe2Z1bmN0aW9uIG8oaSxmKXtpZighbltpXSl7aWYoIWVbaV0pe3ZhciBjPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIWYmJmMpcmV0dXJuIGMoaSwhMCk7aWYodSlyZXR1cm4gdShpLCEwKTt2YXIgYT1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK2krXCInXCIpO3Rocm93IGEuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixhfXZhciBwPW5baV09e2V4cG9ydHM6e319O2VbaV1bMF0uY2FsbChwLmV4cG9ydHMsZnVuY3Rpb24ocil7dmFyIG49ZVtpXVsxXVtyXTtyZXR1cm4gbyhufHxyKX0scCxwLmV4cG9ydHMscixlLG4sdCl9cmV0dXJuIG5baV0uZXhwb3J0c31mb3IodmFyIHU9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxpPTA7aTx0Lmxlbmd0aDtpKyspbyh0W2ldKTtyZXR1cm4gb31yZXR1cm4gcn0pKCkiLCJtb2R1bGUuZXhwb3J0cz17XG4gIFwidmVyc2lvblwiOiBcIjIuNC4wXCJcbn0iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHt2ZXJzaW9ufSA9IHJlcXVpcmUoJy4uL3BhY2thZ2UuanNvbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgbmFtZTogJ3VuZXhwZWN0ZWQtZXZlbnRlbWl0dGVyJyxcbiAgdmVyc2lvbixcbiAgaW5zdGFsbEludG8oZXhwZWN0KSB7XG4gICAgZXhwZWN0LmFkZFR5cGUoe1xuICAgICAgYmFzZTogJ29iamVjdCcsXG4gICAgICBuYW1lOiAnRXZlbnRFbWl0dGVyJyxcbiAgICAgIGlkZW50aWZ5OiAob2JqKSA9PlxuICAgICAgICBvYmogIT09IG51bGwgJiZcbiAgICAgICAgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgdHlwZW9mIG9iai5lbWl0ID09PSAnZnVuY3Rpb24nICYmXG4gICAgICAgIHR5cGVvZiBvYmoub25jZSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgICB0eXBlb2Ygb2JqLm9uID09PSAnZnVuY3Rpb24nLFxuICAgIH0pO1xuXG4gICAgY29uc3QgdG9FbWl0RnJvbSA9IChleHBlY3QsIHN1YmplY3QsIGVlLCBldmVudE5hbWUsIC4uLnZhbHVlcykgPT4ge1xuICAgICAgbGV0IGVtaXR0ZWQgPSBmYWxzZTtcbiAgICAgIGxldCBlbWl0dGVkVmFsdWVzO1xuXG4gICAgICBjb25zdCBvbkV2ZW50ID0gKC4uLnZhbHVlcykgPT4ge1xuICAgICAgICBlbWl0dGVkID0gdHJ1ZTtcbiAgICAgICAgZW1pdHRlZFZhbHVlcyA9IHZhbHVlcztcbiAgICAgIH07XG5cbiAgICAgIGVlLm9uY2UoZXZlbnROYW1lLCBvbkV2ZW50KTtcblxuICAgICAgcmV0dXJuIGV4cGVjdFxuICAgICAgICAucHJvbWlzZSgoKSA9PiB7XG4gICAgICAgICAgZXhwZWN0LmVycm9yTW9kZSA9ICdidWJibGUnO1xuICAgICAgICAgIHJldHVybiBleHBlY3Qoc3ViamVjdCwgJ3RvIGJlIGZ1bGZpbGxlZCcpO1xuICAgICAgICB9KVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgZXhwZWN0LmVycm9yTW9kZSA9ICdkZWZhdWx0JztcbiAgICAgICAgICBleHBlY3QoZW1pdHRlZCwgJ1tub3RdIHRvIGJlIHRydWUnKTtcbiAgICAgICAgICBleHBlY3QuZXJyb3JNb2RlID0gJ25lc3RlZCc7XG4gICAgICAgICAgdmFsdWVzLmZvckVhY2goKHZhbHVlLCBpZHgpID0+IHtcbiAgICAgICAgICAgIGV4cGVjdChlbWl0dGVkVmFsdWVzW2lkeF0sICdbbm90XSB0byBzYXRpc2Z5JywgdmFsdWUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgZWUucmVtb3ZlTGlzdGVuZXIoZXZlbnROYW1lLCBvbkV2ZW50KTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHRvRW1pdFdpdGhFcnJvckZyb20gPSAoXG4gICAgICBleHBlY3QsXG4gICAgICBzdWJqZWN0LFxuICAgICAgZXJyb3IsXG4gICAgICBlZSxcbiAgICAgIGV2ZW50TmFtZSxcbiAgICAgIC4uLnZhbHVlc1xuICAgICkgPT4ge1xuICAgICAgbGV0IGVtaXR0ZWQgPSBmYWxzZTtcbiAgICAgIGxldCBlbWl0dGVkVmFsdWVzO1xuXG4gICAgICBjb25zdCBvbkV2ZW50ID0gKC4uLnZhbHVlcykgPT4ge1xuICAgICAgICBlbWl0dGVkID0gdHJ1ZTtcbiAgICAgICAgZW1pdHRlZFZhbHVlcyA9IHZhbHVlcztcbiAgICAgIH07XG5cbiAgICAgIGVlLm9uY2UoZXZlbnROYW1lLCBvbkV2ZW50KTtcblxuICAgICAgcmV0dXJuIGV4cGVjdFxuICAgICAgICAucHJvbWlzZSgoKSA9PiB7XG4gICAgICAgICAgZXhwZWN0LmVycm9yTW9kZSA9ICdidWJibGUnO1xuICAgICAgICAgIHJldHVybiBleHBlY3Qoc3ViamVjdCwgJ3RvIGJlIHJlamVjdGVkIHdpdGgnLCBlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICBleHBlY3QuZXJyb3JNb2RlID0gJ2RlZmF1bHQnO1xuICAgICAgICAgIGV4cGVjdChlbWl0dGVkLCAndG8gYmUgdHJ1ZScpO1xuICAgICAgICAgIGV4cGVjdC5lcnJvck1vZGUgPSAnbmVzdGVkJztcbiAgICAgICAgICB2YWx1ZXMuZm9yRWFjaCgodmFsdWUsIGlkeCkgPT4ge1xuICAgICAgICAgICAgZXhwZWN0KGVtaXR0ZWRWYWx1ZXNbaWR4XSwgJ3RvIHNhdGlzZnknLCB2YWx1ZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBlZS5yZW1vdmVMaXN0ZW5lcihldmVudE5hbWUsIG9uRXZlbnQpO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgZXhwZWN0XG4gICAgICAuYWRkQXNzZXJ0aW9uKFxuICAgICAgICAnPGZ1bmN0aW9uPiBbbm90XSB0byBlbWl0IGZyb20gPEV2ZW50RW1pdHRlcj4gPHN0cmluZz4gPGFueSo+JyxcbiAgICAgICAgdG9FbWl0RnJvbVxuICAgICAgKVxuICAgICAgLmFkZEFzc2VydGlvbihcbiAgICAgICAgJzxQcm9taXNlPiBbbm90XSB0byBlbWl0IGZyb20gPEV2ZW50RW1pdHRlcj4gPHN0cmluZz4gPGFueSo+JyxcbiAgICAgICAgdG9FbWl0RnJvbVxuICAgICAgKVxuICAgICAgLmFkZEFzc2VydGlvbihcbiAgICAgICAgJzxmdW5jdGlvbj4gdG8gZW1pdCB3aXRoIGVycm9yIGZyb20gPEVycm9yPiA8RXZlbnRFbWl0dGVyPiA8c3RyaW5nPiA8YW55Kj4nLFxuICAgICAgICB0b0VtaXRXaXRoRXJyb3JGcm9tXG4gICAgICApXG4gICAgICAuYWRkQXNzZXJ0aW9uKFxuICAgICAgICAnPFByb21pc2U+IHRvIGVtaXQgd2l0aCBlcnJvciBmcm9tIDxFcnJvcj4gPEV2ZW50RW1pdHRlcj4gPHN0cmluZz4gPGFueSo+JyxcbiAgICAgICAgdG9FbWl0V2l0aEVycm9yRnJvbVxuICAgICAgKTtcbiAgfSxcbn07XG4iXX0=