diff options
Diffstat (limited to 'node_modules/@sinonjs/commons/lib/order-by-first-call.test.js')
-rw-r--r-- | node_modules/@sinonjs/commons/lib/order-by-first-call.test.js | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/node_modules/@sinonjs/commons/lib/order-by-first-call.test.js b/node_modules/@sinonjs/commons/lib/order-by-first-call.test.js new file mode 100644 index 0000000..485ad43 --- /dev/null +++ b/node_modules/@sinonjs/commons/lib/order-by-first-call.test.js @@ -0,0 +1,52 @@ +"use strict"; + +var assert = require("@sinonjs/referee-sinon").assert; +var knuthShuffle = require("knuth-shuffle").knuthShuffle; +var sinon = require("@sinonjs/referee-sinon").sinon; +var orderByFirstCall = require("./order-by-first-call"); + +describe("orderByFirstCall", function() { + it("should order an Array of spies by the callId of the first call, ascending", function() { + // create an array of spies + var spies = [ + sinon.spy(), + sinon.spy(), + sinon.spy(), + sinon.spy(), + sinon.spy(), + sinon.spy() + ]; + + // call all the spies + spies.forEach(function(spy) { + spy(); + }); + + // add a few uncalled spies + spies.push(sinon.spy()); + spies.push(sinon.spy()); + + // randomise the order of the spies + knuthShuffle(spies); + + var sortedSpies = orderByFirstCall(spies); + + assert.equals(sortedSpies.length, spies.length); + + var orderedByFirstCall = sortedSpies.every(function(spy, index) { + if (index + 1 === sortedSpies.length) { + return true; + } + var nextSpy = sortedSpies[index + 1]; + + // uncalled spies should be ordered first + if (!spy.called) { + return true; + } + + return spy.calledImmediatelyBefore(nextSpy); + }); + + assert.isTrue(orderedByFirstCall); + }); +}); |