UNPKG

metaapi.cloud-sdk

Version:

SDK for MetaApi, a professional cloud forex API which includes MetaTrader REST API and MetaTrader websocket API. Supports both MetaTrader 5 (MT5) and MetaTrader 4 (MT4). CopyFactory copy trading API included. (https://metaapi.cloud)

47 lines (46 loc) 4.77 kB
'use strict'; import 'should'; /** * @typedef SpyCallInfo Information about spy call * @property {any} returnValue Call return value * @property {any[]} args Call arguments */ /** * Retrieves information about calls with matched args from a sinon spy * @param {Function} spy Sinon stub or spy * @param {Array} args Expected call arguments * @returns {SpyCallInfo[]} Calls information * @throws If failed to retrieve */ export function getCallsWithMatch(spy, ...args) { return _getCallsWith(spy, 'match', args); } /** * Retrieves information about calls with deep equal args from a sinon spy * @param {Function} spy Sinon stub or spy * @param {Array} args Expected call arguments * @returns {SpyCallInfo[]} Calls information * @throws If failed to retrieve */ export function getCallsWithExactly(spy, ...args) { return _getCallsWith(spy, 'deepEqual', args); } function _getCallsWith(spy, checkMethod, args) { if (!spy.isSinonProxy) { throw new Error('Given function is not a sinon spy'); } let result = []; for(let call = 0; call < spy.args.length; ++call){ let actualArgs = spy.args[call]; try { actualArgs.should[checkMethod](args); result.push({ returnValue: spy.returnValues[call], args: actualArgs }); } catch (err) { if (err.name !== 'AssertionError') { throw err; } } } return result; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxhbm9uPiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCAnc2hvdWxkJztcblxuLyoqXG4gKiBAdHlwZWRlZiBTcHlDYWxsSW5mbyBJbmZvcm1hdGlvbiBhYm91dCBzcHkgY2FsbFxuICogQHByb3BlcnR5IHthbnl9IHJldHVyblZhbHVlIENhbGwgcmV0dXJuIHZhbHVlXG4gKiBAcHJvcGVydHkge2FueVtdfSBhcmdzIENhbGwgYXJndW1lbnRzXG4gKi9cblxuLyoqXG4gKiBSZXRyaWV2ZXMgaW5mb3JtYXRpb24gYWJvdXQgY2FsbHMgd2l0aCBtYXRjaGVkIGFyZ3MgZnJvbSBhIHNpbm9uIHNweVxuICogQHBhcmFtIHtGdW5jdGlvbn0gc3B5IFNpbm9uIHN0dWIgb3Igc3B5XG4gKiBAcGFyYW0ge0FycmF5fSBhcmdzIEV4cGVjdGVkIGNhbGwgYXJndW1lbnRzXG4gKiBAcmV0dXJucyB7U3B5Q2FsbEluZm9bXX0gQ2FsbHMgaW5mb3JtYXRpb25cbiAqIEB0aHJvd3MgSWYgZmFpbGVkIHRvIHJldHJpZXZlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDYWxsc1dpdGhNYXRjaChzcHksIC4uLmFyZ3MpIHtcbiAgcmV0dXJuIF9nZXRDYWxsc1dpdGgoc3B5LCAnbWF0Y2gnLCBhcmdzKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgaW5mb3JtYXRpb24gYWJvdXQgY2FsbHMgd2l0aCBkZWVwIGVxdWFsIGFyZ3MgZnJvbSBhIHNpbm9uIHNweVxuICogQHBhcmFtIHtGdW5jdGlvbn0gc3B5IFNpbm9uIHN0dWIgb3Igc3B5XG4gKiBAcGFyYW0ge0FycmF5fSBhcmdzIEV4cGVjdGVkIGNhbGwgYXJndW1lbnRzXG4gKiBAcmV0dXJucyB7U3B5Q2FsbEluZm9bXX0gQ2FsbHMgaW5mb3JtYXRpb25cbiAqIEB0aHJvd3MgSWYgZmFpbGVkIHRvIHJldHJpZXZlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDYWxsc1dpdGhFeGFjdGx5KHNweSwgLi4uYXJncykge1xuICByZXR1cm4gX2dldENhbGxzV2l0aChzcHksICdkZWVwRXF1YWwnLCBhcmdzKTtcbn1cblxuZnVuY3Rpb24gX2dldENhbGxzV2l0aChzcHksIGNoZWNrTWV0aG9kLCBhcmdzKSB7XG4gIGlmICghc3B5LmlzU2lub25Qcm94eSkge1xuICAgIHRocm93IG5ldyBFcnJvcignR2l2ZW4gZnVuY3Rpb24gaXMgbm90IGEgc2lub24gc3B5Jyk7XG4gIH1cbiAgbGV0IHJlc3VsdCA9IFtdO1xuICBmb3IgKGxldCBjYWxsID0gMDsgY2FsbCA8IHNweS5hcmdzLmxlbmd0aDsgKytjYWxsKSB7XG4gICAgbGV0IGFjdHVhbEFyZ3MgPSBzcHkuYXJnc1tjYWxsXTtcbiAgICB0cnkge1xuICAgICAgYWN0dWFsQXJncy5zaG91bGRbY2hlY2tNZXRob2RdKGFyZ3MpO1xuICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICByZXR1cm5WYWx1ZTogc3B5LnJldHVyblZhbHVlc1tjYWxsXSxcbiAgICAgICAgYXJnczogYWN0dWFsQXJnc1xuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoZXJyLm5hbWUgIT09ICdBc3NlcnRpb25FcnJvcicpIHtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuIl0sIm5hbWVzIjpbImdldENhbGxzV2l0aE1hdGNoIiwic3B5IiwiYXJncyIsIl9nZXRDYWxsc1dpdGgiLCJnZXRDYWxsc1dpdGhFeGFjdGx5IiwiY2hlY2tNZXRob2QiLCJpc1Npbm9uUHJveHkiLCJFcnJvciIsInJlc3VsdCIsImNhbGwiLCJsZW5ndGgiLCJhY3R1YWxBcmdzIiwic2hvdWxkIiwicHVzaCIsInJldHVyblZhbHVlIiwicmV0dXJuVmFsdWVzIiwiZXJyIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFFQSxPQUFPLFNBQVM7QUFFaEI7Ozs7Q0FJQyxHQUVEOzs7Ozs7Q0FNQyxHQUNELE9BQU8sU0FBU0Esa0JBQWtCQyxHQUFHLEVBQUUsR0FBR0MsSUFBSTtJQUM1QyxPQUFPQyxjQUFjRixLQUFLLFNBQVNDO0FBQ3JDO0FBRUE7Ozs7OztDQU1DLEdBQ0QsT0FBTyxTQUFTRSxvQkFBb0JILEdBQUcsRUFBRSxHQUFHQyxJQUFJO0lBQzlDLE9BQU9DLGNBQWNGLEtBQUssYUFBYUM7QUFDekM7QUFFQSxTQUFTQyxjQUFjRixHQUFHLEVBQUVJLFdBQVcsRUFBRUgsSUFBSTtJQUMzQyxJQUFJLENBQUNELElBQUlLLFlBQVksRUFBRTtRQUNyQixNQUFNLElBQUlDLE1BQU07SUFDbEI7SUFDQSxJQUFJQyxTQUFTLEVBQUU7SUFDZixJQUFLLElBQUlDLE9BQU8sR0FBR0EsT0FBT1IsSUFBSUMsSUFBSSxDQUFDUSxNQUFNLEVBQUUsRUFBRUQsS0FBTTtRQUNqRCxJQUFJRSxhQUFhVixJQUFJQyxJQUFJLENBQUNPLEtBQUs7UUFDL0IsSUFBSTtZQUNGRSxXQUFXQyxNQUFNLENBQUNQLFlBQVksQ0FBQ0g7WUFDL0JNLE9BQU9LLElBQUksQ0FBQztnQkFDVkMsYUFBYWIsSUFBSWMsWUFBWSxDQUFDTixLQUFLO2dCQUNuQ1AsTUFBTVM7WUFDUjtRQUNGLEVBQUUsT0FBT0ssS0FBSztZQUNaLElBQUlBLElBQUlDLElBQUksS0FBSyxrQkFBa0I7Z0JBQ2pDLE1BQU1EO1lBQ1I7UUFDRjtJQUNGO0lBQ0EsT0FBT1I7QUFDVCJ9