aboutsummaryrefslogtreecommitdiff
path: root/node_modules/@sinonjs/commons/lib/order-by-first-call.test.js
diff options
context:
space:
mode:
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.js52
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);
+ });
+});