/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var objectUtils = require('utils/object_utils');
describe('utils/object_utils', function() {
describe('#recursiveTree()', function() {
var testObj = {
a1: {
a2: 'v1',
a3: {
a4: {
a5: {
a6: 'v2',
a7: 'v3'
}
}
}
}
};
it('should return correct tree of childs', function(){
var result = objectUtils.recursiveTree(testObj);
expect(result).to.eql('a2 (/a1)
a5 (/a1/a3/a4)
');
});
it('should return `null` if type missed', function() {
var result = objectUtils.recursiveTree('{ a1: "v1"}');
expect(result).to.be.null;
});
});
describe('#recursiveKeysCount()', function() {
var tests = [
{
m: 'should return 1 child',
e: 3,
obj: {
a1: {
a2: 'v1',
a3: 'v2',
a4: {
a5: 'v3'
}
}
}
},
{
m: 'should return 1 childs',
e: 1,
obj: {
a1: 'c1'
}
},
{
m: 'should return `null`',
e: null,
obj: 'a1'
}
];
tests.forEach(function(test){
it(test.m, function() {
expect(objectUtils.recursiveKeysCount(test.obj)).to.be.eql(test.e);
});
});
});
});