source: frontend/node_modules/@sinonjs/commons/lib/called-in-order.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 12 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 1.4 KB
Line 
1"use strict";
2
3var every = require("./prototypes/array").every;
4
5/**
6 * @private
7 */
8function hasCallsLeft(callMap, spy) {
9 if (callMap[spy.id] === undefined) {
10 callMap[spy.id] = 0;
11 }
12
13 return callMap[spy.id] < spy.callCount;
14}
15
16/**
17 * @private
18 */
19function checkAdjacentCalls(callMap, spy, index, spies) {
20 var calledBeforeNext = true;
21
22 if (index !== spies.length - 1) {
23 calledBeforeNext = spy.calledBefore(spies[index + 1]);
24 }
25
26 if (hasCallsLeft(callMap, spy) && calledBeforeNext) {
27 callMap[spy.id] += 1;
28 return true;
29 }
30
31 return false;
32}
33
34/**
35 * A Sinon proxy object (fake, spy, stub)
36 *
37 * @typedef {object} SinonProxy
38 * @property {Function} calledBefore - A method that determines if this proxy was called before another one
39 * @property {string} id - Some id
40 * @property {number} callCount - Number of times this proxy has been called
41 */
42
43/**
44 * Returns true when the spies have been called in the order they were supplied in
45 *
46 * @param {SinonProxy[] | SinonProxy} spies An array of proxies, or several proxies as arguments
47 * @returns {boolean} true when spies are called in order, false otherwise
48 */
49function calledInOrder(spies) {
50 var callMap = {};
51 // eslint-disable-next-line no-underscore-dangle
52 var _spies = arguments.length > 1 ? arguments : spies;
53
54 return every(_spies, checkAdjacentCalls.bind(null, callMap));
55}
56
57module.exports = calledInOrder;
Note: See TracBrowser for help on using the repository browser.