You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
"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); }); });
|