all files / src/__tests__/ removeField.spec.js

100% Statements 24/24
100% Branches 4/4
100% Functions 10/10
100% Lines 21/21
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46                                                    
import expect from 'expect';
import removeField from '../removeField';
 
describe('removeField', () => {
  it('should have no effect if simple field does not exist', () => {
    expect(removeField({foo: 'bar'}, 'baz'))
      .toEqual({foo: 'bar'});
  });
 
  it('should not return same instance', () => {
    const fields = {foo: 'bar'};
    expect(removeField(fields, 'foo'))
      .toNotBe(fields);
  });
 
  it('should remove a simple field', () => {
    expect(removeField({foo: 'bar', dog: 42}, 'dog'))
      .toEqual({foo: 'bar'});
  });
 
  it('should remove a nested field', () => {
    expect(removeField({foo: {rat: 'bar'}, dog: 42}, 'foo.rat'))
      .toEqual({dog: 42});
  });
 
  it('should remove a nested field from root', () => {
    expect(removeField({foo: {rat: 'bar'}, dog: 42}, 'foo'))
      .toEqual({dog: 42});
  });
 
  it('should remove an array field', () => {
    expect(removeField({foo: [{rat: 'bar'}], dog: 42}, 'foo[].rat'))
      .toEqual({dog: 42});
  });
 
  it('should remove a deep field', () => {
    expect(removeField({foo: [{rat: {pig: 'bar'}}], dog: 42}, 'foo[].rat.pig'))
      .toEqual({dog: 42});
  });
 
  it('should remove an array field from root', () => {
    expect(removeField({foo: [{rat: 'bar'}], dog: 42}, 'foo'))
      .toEqual({dog: 42});
  });
});