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