UNPKG

jrf-path-exists

Version:
144 lines (90 loc) 2.16 kB
const pathExists = require('./pathExists'); const obj = { a: { b: { c: 'hello world' } }, d: { arr: [ 'hello', 'world', { a: 8, b: ['one', 'two', 'three'] }, ['q', 'w', 'r', ['h', 'l', 'o']] ] }, e: ['one el', 'two el'], f: null }; const b = 'b'; test('a.b.c', () => { const res = pathExists(obj, 'a.b.c', null); expect(res).toEqual('hello world'); }); test('a[${b}].c', () => { const res = pathExists(obj, `a[${b}].c`); expect(res).toEqual('hello world'); }); test('a.${b}.c', () => { const res = pathExists(obj, `a[${b}].c`); expect(res).toEqual('hello world'); }); test('a.b.c.d.s', () => { const res = pathExists(obj, `a.b.c.d.s`); expect(res).toBeUndefined(); }); test('d.arr[2].b[1]', () => { const res = pathExists(obj, 'd.arr[2].b[1]'); expect(res).toEqual('two'); }); test('d.arr[3].3.2', () => { const res = pathExists(obj, 'd.arr[3].3.2'); expect(res).toEqual('o'); }); test('d.arr[3][3][2]', () => { const res = pathExists(obj, 'd.arr[3][3][2]'); expect(res).toEqual('o'); }); test('e[1]', () => { const res = pathExists(obj, 'e[1]'); expect(res).toEqual('two el'); }); test('e[4]', () => { const res = pathExists(obj, `e[4]`); expect(res).toBeUndefined(); }); test('default: null', () => { const res = pathExists(obj, `e[4]`, null); expect(res).toBeNull(); }); test('default: false', () => { const res = pathExists(obj, `e[4]`, false); expect(res).toBeFalsy(); }); test('default: 0', () => { const res = pathExists(obj, `e[4]`, 0); expect(res).toEqual(0); }); test('default: []', () => { const res = pathExists(obj, `e[4]`, []); expect(res).toEqual([]); }); test(`default: ''`, () => { const res = pathExists(obj, `e[4]`, ''); expect(res).toEqual(''); }); test(`default: {}`, () => { const res = pathExists(obj, `e[4]`, {}); expect(res).toMatchObject({}); }); test(`value is null`, () => { const res = pathExists(obj, `f`); expect(res).toBeNull(); }); test(`default: 7`, () => { const res = pathExists(obj, `f`, 7); expect(res).toEqual(7); });