unexpected-sinon
Advanced tools
Comparing version 10.5.1 to 10.6.0
@@ -560,2 +560,59 @@ /*global location*/ | ||
expect.addAssertion('<spy|array|sinonSandbox> to have no calls [exhaustively] satisfying <object>', function (expect, subject, value) { | ||
var keys = Object.keys(value); | ||
if ( | ||
keys.length > 0 && | ||
keys.every(function (key) { | ||
return /^[1-9]*[0-9]+$/.test(key); | ||
}) | ||
) { | ||
return expect(subject, 'to have no calls [exhaustively] satisfying', { args: value }); | ||
} | ||
expect.errorMode = 'defaultOrNested'; | ||
// Get a flattened array of all calls to all the specified spies: | ||
var calls = Array.prototype.concat.apply([], extractSpies(subject).map(getCalls)); | ||
var promises = calls.map(function (call) { | ||
return expect.promise(function () { | ||
return expect(call, 'to [exhaustively] satisfy', value); | ||
}); | ||
}); | ||
return expect.promise.settle(promises).then(function () { | ||
var failed = promises.some(function (promise) { | ||
return promise.isFulfilled(); | ||
}); | ||
if (failed) { | ||
return expect(calls, 'to equal', toSpyCalls(calls.filter(function (call, i) { | ||
return promises[i].isRejected(); | ||
}))); | ||
} | ||
}); | ||
}); | ||
expect.addAssertion('<spy|array|sinonSandbox> to have no calls [exhaustively] satisfying <array>', function (expect, subject, value) { | ||
return expect(subject, 'to have no calls [exhaustively] satisfying', { args: value }); | ||
}); | ||
expect.addAssertion('<spy|array|sinonSandbox> to have no calls satisfying <function>', function (expect, subject, value) { | ||
var expectedSpyCallSpecs = recordSpyCalls(extractSpies(subject), value); | ||
var expectedSpyCalls = []; | ||
expectedSpyCallSpecs.forEach(function (expectedSpyCallSpec) { | ||
expectedSpyCalls.push(expectedSpyCallSpec.call); | ||
delete expectedSpyCallSpec.call; | ||
delete expectedSpyCallSpec.callId; | ||
}); | ||
if (expectedSpyCalls.length > 0) { | ||
expect.argsOutput[0] = function (output) { | ||
output.appendInspected(expectedSpyCalls); | ||
}; | ||
} | ||
if (expectedSpyCallSpecs.length !== 1) { | ||
expect.errorMode = 'nested'; | ||
expect.fail('expected the provided function to call the spy exactly once, but it called it ' + expectedSpyCallSpecs.length + ' times'); | ||
} | ||
return expect(subject, 'to have no calls satisfying', expectedSpyCallSpecs[0]); | ||
}); | ||
expect.addAssertion('<spy|array|sinonSandbox> to have a call [exhaustively] satisfying <object>', function (expect, subject, value) { | ||
@@ -616,2 +673,44 @@ var keys = Object.keys(value); | ||
expect.addAssertion('<spy|array|sinonSandbox> to have all calls [exhaustively] satisfying <object>', function (expect, subject, value) { | ||
var keys = Object.keys(value); | ||
if ( | ||
keys.length > 0 && | ||
keys.every(function (key) { | ||
return /^[1-9]*[0-9]+$/.test(key); | ||
}) | ||
) { | ||
return expect(subject, 'to have all calls [exhaustively] satisfying', { args: value }); | ||
} | ||
expect.errorMode = 'defaultOrNested'; | ||
// Get a flattened array of all calls to all the specified spies: | ||
var calls = Array.prototype.concat.apply([], extractSpies(subject).map(getCalls)); | ||
return expect(calls, 'to have items [exhaustively] satisfying', value); | ||
}); | ||
expect.addAssertion('<spy|array|sinonSandbox> to have all calls [exhaustively] satisfying <array>', function (expect, subject, value) { | ||
return expect(subject, 'to have all calls [exhaustively] satisfying', { args: value }); | ||
}); | ||
expect.addAssertion('<spy|array|sinonSandbox> to have all calls satisfying <function>', function (expect, subject, value) { | ||
var expectedSpyCallSpecs = recordSpyCalls(extractSpies(subject), value); | ||
var expectedSpyCalls = []; | ||
expectedSpyCallSpecs.forEach(function (expectedSpyCallSpec) { | ||
expectedSpyCalls.push(expectedSpyCallSpec.call); | ||
delete expectedSpyCallSpec.call; | ||
delete expectedSpyCallSpec.callId; | ||
}); | ||
if (expectedSpyCalls.length > 0) { | ||
expect.argsOutput[0] = function (output) { | ||
output.appendInspected(expectedSpyCalls); | ||
}; | ||
} | ||
if (expectedSpyCallSpecs.length !== 1) { | ||
expect.errorMode = 'nested'; | ||
expect.fail('expected the provided function to call the spy exactly once, but it called it ' + expectedSpyCallSpecs.length + ' times'); | ||
} | ||
return expect(subject, 'to have all calls satisfying', expectedSpyCallSpecs[0]); | ||
}); | ||
expect.addAssertion('<spy> was [always] called with [exactly] <any*>', function (expect, subject) { | ||
@@ -618,0 +717,0 @@ expect.errorMode = 'defaultOrNested'; |
{ | ||
"name": "unexpected-sinon", | ||
"version": "10.5.1", | ||
"version": "10.6.0", | ||
"author": "Sune Sloth Simonsen <sune@we-knowhow.dk>", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
Sorry, the diff of this file is too big to display
407130
31
7178