12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- "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);
- });
- });
|