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.
36 lines
817 B
36 lines
817 B
"use strict"; |
|
|
|
var sort = require("./prototypes/array").sort; |
|
var slice = require("./prototypes/array").slice; |
|
|
|
/** |
|
* @private |
|
*/ |
|
function comparator(a, b) { |
|
// uuid, won't ever be equal |
|
var aCall = a.getCall(0); |
|
var bCall = b.getCall(0); |
|
var aId = (aCall && aCall.callId) || -1; |
|
var bId = (bCall && bCall.callId) || -1; |
|
|
|
return aId < bId ? -1 : 1; |
|
} |
|
|
|
/** |
|
* A Sinon proxy object (fake, spy, stub) |
|
* |
|
* @typedef {object} SinonProxy |
|
* @property {Function} getCall - A method that can return the first call |
|
*/ |
|
|
|
/** |
|
* Sorts an array of SinonProxy instances (fake, spy, stub) by their first call |
|
* |
|
* @param {SinonProxy[] | SinonProxy} spies |
|
* @returns {SinonProxy[]} |
|
*/ |
|
function orderByFirstCall(spies) { |
|
return sort(slice(spies), comparator); |
|
} |
|
|
|
module.exports = orderByFirstCall;
|
|
|