mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-19 15:48:04 +01:00
add pickDeep utility function to pick nested properties from objects
This commit is contained in:
34
test/common/libs/pickDeep.js
Normal file
34
test/common/libs/pickDeep.js
Normal file
@@ -0,0 +1,34 @@
|
||||
import pickDeep from '../../../common/script/libs/pickDeep';
|
||||
|
||||
describe('pickDeep', () => {
|
||||
it('throws an error if "properties" is not an array', () => {
|
||||
expect(pickDeep).to.throw(Error);
|
||||
});
|
||||
|
||||
it('returns an object of properties taken from the input object', () => {
|
||||
let obj = {
|
||||
a: true,
|
||||
b: [1, 2, 3],
|
||||
c: {
|
||||
nested: {
|
||||
two: {
|
||||
times: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
d: false,
|
||||
};
|
||||
|
||||
let res = pickDeep(obj, ['a', 'b[0]', 'c.nested.two.times']);
|
||||
expect(res.a).to.be.true;
|
||||
expect(res.b).to.eql([1]);
|
||||
expect(res.c).to.eql({
|
||||
nested: {
|
||||
two: {
|
||||
times: true,
|
||||
},
|
||||
},
|
||||
});
|
||||
expect(res).to.not.have.property('d');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user