You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
3.0 KiB
95 lines
3.0 KiB
3 years ago
|
"use strict";
|
||
|
|
||
|
var _chai = require("chai");
|
||
|
|
||
|
var _get = require("./get");
|
||
|
|
||
|
describe('module:flat.get', () => {
|
||
|
let params;
|
||
|
beforeEach(() => {
|
||
|
params = {
|
||
|
name: 'Wojtek',
|
||
|
surname: 'Krysiak',
|
||
|
age: 36,
|
||
|
'interest.OfMe.0': 'javascript',
|
||
|
'interest.OfMe.1': 'typescript',
|
||
|
'interest.OfMe.2': 'brainTumor',
|
||
|
interests: 'Generally everything',
|
||
|
'meta.position': 'CTO',
|
||
|
'meta.workingHours': '9:00-17:00',
|
||
|
'meta.duties': 'everything',
|
||
|
'meta.fun': '8/10',
|
||
|
nulled: null,
|
||
|
emptyArray: [],
|
||
|
emptyObject: {},
|
||
|
'nested.0.el.0.value': 'val0.0',
|
||
|
'nested.0.el.1.value': 'val0.1',
|
||
|
'nested.1.el.0.value': 'val1',
|
||
|
'nested.1.el.1.value': 'val2'
|
||
|
};
|
||
|
});
|
||
|
it('returns regular string', () => {
|
||
|
(0, _chai.expect)((0, _get.get)(params, 'name')).to.eq(params.name);
|
||
|
});
|
||
|
it('returns undefined for non existing property', () => {
|
||
|
(0, _chai.expect)((0, _get.get)(params, 'nameNotExisting')).to.be.undefined;
|
||
|
});
|
||
|
it('returns undefined for property set to undefined', () => {
|
||
|
(0, _chai.expect)((0, _get.get)({
|
||
|
property: undefined
|
||
|
}, 'property')).to.be.undefined;
|
||
|
});
|
||
|
it('returns nested array', () => {
|
||
|
(0, _chai.expect)((0, _get.get)(params, 'interest.OfMe')).to.deep.equal(['javascript', 'typescript', 'brainTumor']);
|
||
|
});
|
||
|
it('returns object with nested array', () => {
|
||
|
(0, _chai.expect)((0, _get.get)(params, 'interest')).to.deep.equal({
|
||
|
OfMe: ['javascript', 'typescript', 'brainTumor']
|
||
|
});
|
||
|
});
|
||
|
it('returns undefined when not exact property is given', () => {
|
||
|
(0, _chai.expect)((0, _get.get)(params, 'interest.Of')).to.be.undefined;
|
||
|
});
|
||
|
it('returns null for null values', () => {
|
||
|
(0, _chai.expect)((0, _get.get)(params, 'nulled')).to.eq(null);
|
||
|
});
|
||
|
it('returns nested arrays', () => {
|
||
|
(0, _chai.expect)((0, _get.get)(params, 'nested.0.el')).to.deep.equal([{
|
||
|
value: 'val0.0'
|
||
|
}, {
|
||
|
value: 'val0.1'
|
||
|
}]);
|
||
|
});
|
||
|
it('returns nested arrays with siblings when `includeAllSiblings` is set', () => {
|
||
|
(0, _chai.expect)((0, _get.get)(params, 'nested.el', {
|
||
|
includeAllSiblings: true
|
||
|
})).to.deep.equal([{
|
||
|
value: 'val0.0'
|
||
|
}, {
|
||
|
value: 'val0.1'
|
||
|
}, {
|
||
|
value: 'val1'
|
||
|
}, {
|
||
|
value: 'val2'
|
||
|
}]);
|
||
|
});
|
||
|
context('gets nested reference id', () => {
|
||
|
const referenceId = '5f7462621eb3495ea0f0edd9';
|
||
|
beforeEach(() => {
|
||
|
params = {
|
||
|
'Skills._id': '5f925f58016eab056c8c35a7',
|
||
|
'Skills.softShills': [],
|
||
|
'Skills.hardSkills.0._id': '5f925f58016eab056c8c35a8',
|
||
|
'Skills.hardSkills.0.name': '123',
|
||
|
'Skills.hardSkills.0.level': 'junior',
|
||
|
'Skills.hardSkills.0.Profession': referenceId
|
||
|
};
|
||
|
});
|
||
|
it('returns referenceId when propertyPath is given', () => {
|
||
|
const propertyPath = 'Skills.hardSkills.Profession';
|
||
|
(0, _chai.expect)((0, _get.get)(params, propertyPath, {
|
||
|
includeAllSiblings: true
|
||
|
})).to.deep.equal([referenceId]);
|
||
|
});
|
||
|
});
|
||
|
});
|