291 lines
6.9 KiB
JavaScript
291 lines
6.9 KiB
JavaScript
'use strict';
|
|
|
|
const assert = require('assert');
|
|
const { inspectParameters, getParametersNames } = require('../');
|
|
|
|
const { testsParametersNames, testsInspectParameters } = getTestData();
|
|
|
|
describe('getParametersNames', function() {
|
|
const tests = testsParametersNames;
|
|
|
|
Object.keys(tests).forEach(key => {
|
|
describe(`${key}`, function() {
|
|
it(`Must match the expected parameters name`, function() {
|
|
const allParametersNames = getParametersNames(tests[key].input);
|
|
assert.deepEqual(allParametersNames, tests[key].expectedResult);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('inspectParameters', function() {
|
|
const tests = testsInspectParameters;
|
|
|
|
Object.keys(tests).forEach(key => {
|
|
describe(`${key}`, function() {
|
|
it(`Must match the expected result`, function() {
|
|
const allParametersNames = inspectParameters(tests[key].input);
|
|
assert.deepEqual(allParametersNames, tests[key].expectedResult);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
function getTestData() {
|
|
const testsParametersNames = {
|
|
arrowWithoutParenthesis: {
|
|
input: param => console.log(param),
|
|
expectedResult: ['param']
|
|
},
|
|
|
|
arrowWithParenthesis: {
|
|
input: (param) => console.log(param),
|
|
expectedResult: ['param']
|
|
},
|
|
|
|
arrowWithParenthesisWithoutParameters: {
|
|
input: () => {},
|
|
expectedResult: []
|
|
},
|
|
|
|
arrowWithParenthesisAndDefaultValues: {
|
|
input: (param = 'defaultParam', param2 = 'defaultParam') => console.log(param),
|
|
expectedResult: ['param', 'param2']
|
|
},
|
|
|
|
simpleFunction: {
|
|
input: function fn(z, k) {},
|
|
expectedResult: ['z', 'k']
|
|
},
|
|
|
|
simpleFunctionWithoutParameters: {
|
|
input: function fn() {},
|
|
expectedResult: []
|
|
},
|
|
|
|
functionExpectingDestructuring: {
|
|
input: function fn({ a } = {}, b, [d, e, z = "ZZ"] = [1, 2]) {},
|
|
expectedResult: ['a', 'b', 'd', 'e', 'z']
|
|
},
|
|
|
|
staticMethodFromClass: {
|
|
input: (() => {
|
|
class fn {
|
|
static staticMethod(b, l, a = 'A') {
|
|
console.log(`bla bla`);
|
|
}
|
|
}
|
|
return fn.staticMethod;
|
|
})(),
|
|
expectedResult: ['b', 'l', 'a']
|
|
},
|
|
|
|
complexNonSenseFunction: {
|
|
input: (option, a = 2,
|
|
b = { c: 1 }, arr = ([]), arr2 = [1, 2, 3], e = {
|
|
a: {
|
|
b: 3,
|
|
d: ([{}])
|
|
}
|
|
}, z) => (a = 2, b = { c: 1 }, arr = [], d = function(z) {}, e = {
|
|
a: {
|
|
b: 3,
|
|
d: x => x
|
|
}
|
|
}, fn = d => s, fn2 = d => {
|
|
return s
|
|
}),
|
|
expectedResult: ['option', 'a', 'b', 'arr', 'arr2', 'e', 'z']
|
|
}
|
|
};
|
|
|
|
const testsInspectParameters = {
|
|
stringMultipleParametersDeclaration: {
|
|
input: `[p1 = 1,[p2 = 'P2DEF',[p3]]]=[], [a,b], { z, k, zk: {zz} }={}, zkzkz = 111, [zk,zzk,zzzk],iowu`,
|
|
expectedResult: [{
|
|
"parameter": "[p1 = 1,[p2 = 'P2DEF',[p3]]]",
|
|
"defaultValue": "[]",
|
|
"expectsDestructuring": true,
|
|
"declaration": "[p1 = 1,[p2 = 'P2DEF',[p3]]]=[]",
|
|
"destructuredParameters": [{
|
|
"parameter": "p1",
|
|
"defaultValue": "1",
|
|
"declaration": "p1 = 1"
|
|
}, {
|
|
"parameter": "p2",
|
|
"defaultValue": "P2DEF",
|
|
"declaration": "p2 = 'P2DEF'"
|
|
}, {
|
|
"parameter": "p3",
|
|
"declaration": "p3"
|
|
}]
|
|
}, {
|
|
"parameter": "[a,b]",
|
|
"expectsDestructuring": true,
|
|
"declaration": "[a,b]",
|
|
"destructuredParameters": [{
|
|
"parameter": "a",
|
|
"declaration": "a"
|
|
}, {
|
|
"parameter": "b",
|
|
"declaration": "b"
|
|
}]
|
|
}, {
|
|
"parameter": "{ z, k, zk: {zz} }",
|
|
"defaultValue": "{}",
|
|
"expectsDestructuring": true,
|
|
"declaration": "{ z, k, zk: {zz} }={}",
|
|
"destructuredParameters": [{
|
|
"parameter": "z",
|
|
"declaration": "z"
|
|
}, {
|
|
"parameter": "k",
|
|
"declaration": "k"
|
|
}, {
|
|
"parameter": "zz",
|
|
"declaration": "zz"
|
|
}]
|
|
}, {
|
|
"parameter": "zkzkz",
|
|
"defaultValue": "111",
|
|
"declaration": "zkzkz = 111"
|
|
}, {
|
|
"parameter": "[zk,zzk,zzzk]",
|
|
"expectsDestructuring": true,
|
|
"declaration": "[zk,zzk,zzzk]",
|
|
"destructuredParameters": [{
|
|
"parameter": "zk",
|
|
"declaration": "zk"
|
|
}, {
|
|
"parameter": "zzk",
|
|
"declaration": "zzk"
|
|
}, {
|
|
"parameter": "zzzk",
|
|
"declaration": "zzzk"
|
|
}]
|
|
}, {
|
|
"parameter": "iowu",
|
|
"declaration": "iowu"
|
|
}]
|
|
},
|
|
|
|
functionMultipleParametersDeclaration: {
|
|
input: ([p1 = 1,[p2 = 'P2DEF',[p3]]]=[], [a,b], { z, k, zk: {zz} }={}, zkzkz = 111, [zk,zzk,zzzk],iowu) => {},
|
|
expectedResult: [{
|
|
"parameter": "[p1 = 1,[p2 = 'P2DEF',[p3]]]",
|
|
"defaultValue": "[]",
|
|
"expectsDestructuring": true,
|
|
"declaration": "[p1 = 1,[p2 = 'P2DEF',[p3]]]=[]",
|
|
"destructuredParameters": [{
|
|
"parameter": "p1",
|
|
"defaultValue": "1",
|
|
"declaration": "p1 = 1"
|
|
}, {
|
|
"parameter": "p2",
|
|
"defaultValue": "P2DEF",
|
|
"declaration": "p2 = 'P2DEF'"
|
|
}, {
|
|
"parameter": "p3",
|
|
"declaration": "p3"
|
|
}]
|
|
}, {
|
|
"parameter": "[a,b]",
|
|
"expectsDestructuring": true,
|
|
"declaration": "[a,b]",
|
|
"destructuredParameters": [{
|
|
"parameter": "a",
|
|
"declaration": "a"
|
|
}, {
|
|
"parameter": "b",
|
|
"declaration": "b"
|
|
}]
|
|
}, {
|
|
"parameter": "{ z, k, zk: {zz} }",
|
|
"defaultValue": "{}",
|
|
"expectsDestructuring": true,
|
|
"declaration": "{ z, k, zk: {zz} }={}",
|
|
"destructuredParameters": [{
|
|
"parameter": "z",
|
|
"declaration": "z"
|
|
}, {
|
|
"parameter": "k",
|
|
"declaration": "k"
|
|
}, {
|
|
"parameter": "zz",
|
|
"declaration": "zz"
|
|
}]
|
|
}, {
|
|
"parameter": "zkzkz",
|
|
"defaultValue": "111",
|
|
"declaration": "zkzkz = 111"
|
|
}, {
|
|
"parameter": "[zk,zzk,zzzk]",
|
|
"expectsDestructuring": true,
|
|
"declaration": "[zk,zzk,zzzk]",
|
|
"destructuredParameters": [{
|
|
"parameter": "zk",
|
|
"declaration": "zk"
|
|
}, {
|
|
"parameter": "zzk",
|
|
"declaration": "zzk"
|
|
}, {
|
|
"parameter": "zzzk",
|
|
"declaration": "zzzk"
|
|
}]
|
|
}, {
|
|
"parameter": "iowu",
|
|
"declaration": "iowu"
|
|
}]
|
|
},
|
|
|
|
stringParameterDeclaration: {
|
|
input: `[p1,[p2 = '',[p3]]]=[]`,
|
|
expectedResult: [{
|
|
"parameter": "[p1,[p2 = '',[p3]]]",
|
|
"defaultValue": "[]",
|
|
"expectsDestructuring": true,
|
|
"declaration": "[p1,[p2 = '',[p3]]]=[]",
|
|
"destructuredParameters": [
|
|
{
|
|
"parameter": "p1",
|
|
"declaration": "p1"
|
|
},
|
|
{
|
|
"parameter": "p2",
|
|
"declaration": "p2 = ''"
|
|
},
|
|
{
|
|
"parameter": "p3",
|
|
"declaration": "p3"
|
|
}
|
|
]
|
|
}]
|
|
},
|
|
|
|
functionParameterDeclaration: {
|
|
input: function ([p1,[p2 = '',[p3]]]=[]) { return; },
|
|
expectedResult: [{
|
|
"parameter": "[p1,[p2 = '',[p3]]]",
|
|
"defaultValue": "[]",
|
|
"expectsDestructuring": true,
|
|
"declaration": "[p1,[p2 = '',[p3]]]=[]",
|
|
"destructuredParameters": [
|
|
{
|
|
"parameter": "p1",
|
|
"declaration": "p1"
|
|
},
|
|
{
|
|
"parameter": "p2",
|
|
"declaration": "p2 = ''"
|
|
},
|
|
{
|
|
"parameter": "p3",
|
|
"declaration": "p3"
|
|
}
|
|
]
|
|
}]
|
|
}
|
|
};
|
|
|
|
return { testsParametersNames, testsInspectParameters };
|
|
} |