You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							83 lines
						
					
					
						
							2.2 KiB
						
					
					
				
			
		
		
	
	
							83 lines
						
					
					
						
							2.2 KiB
						
					
					
				"use strict";
 | 
						|
 | 
						|
var _chai = require("chai");
 | 
						|
 | 
						|
var _merge = require("./merge");
 | 
						|
 | 
						|
describe('merge', () => {
 | 
						|
  it('removes nulled arrays when nested items were found', () => {
 | 
						|
    const object1 = {
 | 
						|
      status: 'draft',
 | 
						|
      postImage: null,
 | 
						|
      blogImageSizes: null
 | 
						|
    };
 | 
						|
    const object2 = {
 | 
						|
      'blogImageSizes.0': 4130,
 | 
						|
      'blogImageMimeTypes.0': 'image/jpeg'
 | 
						|
    };
 | 
						|
    (0, _chai.expect)((0, _merge.merge)(object1, object2)).to.deep.equal({
 | 
						|
      status: 'draft',
 | 
						|
      postImage: null,
 | 
						|
      'blogImageSizes.0': 4130,
 | 
						|
      'blogImageMimeTypes.0': 'image/jpeg'
 | 
						|
    });
 | 
						|
  });
 | 
						|
  context('object with nested fields are given in the first argument', () => {
 | 
						|
    const object1 = {
 | 
						|
      status: {
 | 
						|
        type: 'draft',
 | 
						|
        updated: 'yesterday',
 | 
						|
        tags: ['super']
 | 
						|
      }
 | 
						|
    };
 | 
						|
    it('flattens everything and changes just nested property when it was given nested', () => {
 | 
						|
      const object2 = {
 | 
						|
        'status.type': 'newDraft'
 | 
						|
      };
 | 
						|
      (0, _chai.expect)((0, _merge.merge)(object1, object2)).to.deep.equal({
 | 
						|
        'status.type': object2['status.type'],
 | 
						|
        'status.updated': 'yesterday',
 | 
						|
        'status.tags.0': 'super'
 | 
						|
      });
 | 
						|
    });
 | 
						|
    it('changes entire record when 2 objects are given', () => {
 | 
						|
      const object2 = {
 | 
						|
        status: {
 | 
						|
          type: 'newType',
 | 
						|
          updated: 'today'
 | 
						|
        }
 | 
						|
      };
 | 
						|
      (0, _chai.expect)((0, _merge.merge)(object1, object2)).to.deep.equal({
 | 
						|
        'status.type': object2.status.type,
 | 
						|
        'status.updated': 'today'
 | 
						|
      });
 | 
						|
    });
 | 
						|
  });
 | 
						|
  describe('multiple parameters', () => {
 | 
						|
    const object1 = {
 | 
						|
      status: {
 | 
						|
        type: 'draft'
 | 
						|
      }
 | 
						|
    };
 | 
						|
    it('returns flatten object when one other argument is given', () => {
 | 
						|
      (0, _chai.expect)((0, _merge.merge)(object1)).to.deep.equal({
 | 
						|
        'status.type': 'draft'
 | 
						|
      });
 | 
						|
    });
 | 
						|
    it('merges more then 2 arguments', () => {
 | 
						|
      const object2 = {
 | 
						|
        'status.type': 'status2',
 | 
						|
        'status.age': '1 day'
 | 
						|
      };
 | 
						|
      const object3 = {
 | 
						|
        'status.type': 'status3',
 | 
						|
        names: ['Wojtek']
 | 
						|
      };
 | 
						|
      (0, _chai.expect)((0, _merge.merge)(object1, object2, object3)).to.deep.equal({
 | 
						|
        'status.type': 'status2',
 | 
						|
        'status.age': '1 day',
 | 
						|
        'names.0': 'Wojtek'
 | 
						|
      });
 | 
						|
    });
 | 
						|
  });
 | 
						|
}); |