mirror of
https://github.com/documentationjs/documentation.git
synced 2025-12-08 18:23:43 +00:00
104 lines
2.4 KiB
JavaScript
104 lines
2.4 KiB
JavaScript
const nestTag = require('../../src/nest').nestTag;
|
|
|
|
// Print a tree of tags in a way that's easy to test.
|
|
const printTree = indent => node =>
|
|
`${new Array(indent + 1).join(' ')}- ${node.name}${
|
|
node.properties ? '\n' : ''
|
|
}${(node.properties || []).map(printTree(indent + 1)).join('\n')}`;
|
|
|
|
const printNesting = params =>
|
|
printTree(0)({ properties: nestTag(params), name: 'root' });
|
|
|
|
test('nest params - basic', function() {
|
|
const params = [
|
|
'foo',
|
|
'foo.bar',
|
|
'foo.bar.third',
|
|
'foo.third',
|
|
'foo.third[].baz'
|
|
].map(name => ({ name }));
|
|
expect(printNesting(params)).toBe(
|
|
`- root
|
|
- foo
|
|
- foo.bar
|
|
- foo.bar.third
|
|
- foo.third
|
|
- foo.third[].baz`
|
|
);
|
|
});
|
|
|
|
test('nest params - multiple roots', function() {
|
|
const params = ['a', 'b', 'c'].map(name => ({ name }));
|
|
expect(printNesting(params)).toBe(
|
|
`- root
|
|
- a
|
|
- b
|
|
- c`
|
|
);
|
|
});
|
|
|
|
test('nest params - missing parent', function() {
|
|
const params = ['foo', 'foo.bar.third'].map(name => ({ name }));
|
|
expect(() => {
|
|
nestTag(params);
|
|
}).toThrow();
|
|
});
|
|
|
|
test('nest params - #658', function() {
|
|
const params = [
|
|
'state',
|
|
'payload',
|
|
'payload.input_meter_levels',
|
|
'payload.input_meter_levels[].peak',
|
|
'payload.input_meter_levels[].rms',
|
|
'payload.output_meter_levels',
|
|
'payload.output_meter_levels[].peak',
|
|
'payload.output_meter_levels[].rms'
|
|
].map(name => ({ name }));
|
|
expect(printNesting(params)).toBe(
|
|
`- root
|
|
- state
|
|
- payload
|
|
- payload.input_meter_levels
|
|
- payload.input_meter_levels[].peak
|
|
- payload.input_meter_levels[].rms
|
|
- payload.output_meter_levels
|
|
- payload.output_meter_levels[].peak
|
|
- payload.output_meter_levels[].rms`
|
|
);
|
|
});
|
|
|
|
test('nest params - #554', function() {
|
|
const params = [
|
|
'x',
|
|
'yIn',
|
|
'options',
|
|
'options.sgOption',
|
|
'options.minMaxRatio',
|
|
'options.broadRatio',
|
|
'options.noiseLevel',
|
|
'options.maxCriteria',
|
|
'options.smoothY',
|
|
'options.realTopDetection',
|
|
'options.heightFactor',
|
|
'options.boundaries',
|
|
'options.derivativeThreshold'
|
|
].map(name => ({ name }));
|
|
expect(printNesting(params)).toBe(
|
|
`- root
|
|
- x
|
|
- yIn
|
|
- options
|
|
- options.sgOption
|
|
- options.minMaxRatio
|
|
- options.broadRatio
|
|
- options.noiseLevel
|
|
- options.maxCriteria
|
|
- options.smoothY
|
|
- options.realTopDetection
|
|
- options.heightFactor
|
|
- options.boundaries
|
|
- options.derivativeThreshold`
|
|
);
|
|
});
|