1*8d307f52SEvan Baconimport { set, get, pickBy } from '../obj'; 2*8d307f52SEvan Bacon 3*8d307f52SEvan Bacondescribe(set, () => { 4*8d307f52SEvan Bacon it(`sets deeply`, () => { 5*8d307f52SEvan Bacon expect(set({}, 'a.b.c', 'd')).toEqual({ a: { b: { c: 'd' } } }); 6*8d307f52SEvan Bacon }); 7*8d307f52SEvan Bacon it(`overwrites`, () => { 8*8d307f52SEvan Bacon expect(set({ a: { b: { c: 'e' } } }, 'a.b.c', 'd')).toEqual({ a: { b: { c: 'd' } } }); 9*8d307f52SEvan Bacon }); 10*8d307f52SEvan Bacon it(`shallow writes`, () => { 11*8d307f52SEvan Bacon expect(set({}, 'a', 'd')).toEqual({ a: 'd' }); 12*8d307f52SEvan Bacon }); 13*8d307f52SEvan Bacon}); 14*8d307f52SEvan Bacondescribe(get, () => { 15*8d307f52SEvan Bacon it(`gets deeply`, () => { 16*8d307f52SEvan Bacon expect(get({ a: { b: { c: 'd' } } }, 'a.b.c')).toEqual('d'); 17*8d307f52SEvan Bacon }); 18*8d307f52SEvan Bacon it(`returns null`, () => { 19*8d307f52SEvan Bacon expect(get({ a: { b: { c: 'd' } } }, 'a.b.d')).toEqual(null); 20*8d307f52SEvan Bacon }); 21*8d307f52SEvan Bacon}); 22*8d307f52SEvan Bacon 23*8d307f52SEvan Bacondescribe(pickBy, () => { 24*8d307f52SEvan Bacon it(`picks`, () => { 25*8d307f52SEvan Bacon expect(pickBy({ a: { b: { c: 'd' } } }, (_, key) => key.startsWith('a'))).toEqual({ 26*8d307f52SEvan Bacon a: { b: { c: 'd' } }, 27*8d307f52SEvan Bacon }); 28*8d307f52SEvan Bacon }); 29*8d307f52SEvan Bacon it(`ignores`, () => { 30*8d307f52SEvan Bacon expect(pickBy({ a: { b: { c: 'd' } } }, (_, key) => !key.startsWith('a'))).toEqual({}); 31*8d307f52SEvan Bacon }); 32*8d307f52SEvan Bacon}); 33