clone-deep.spec.js 918 B

12345678910111213141516171819202122232425262728
  1. import {expect} from 'chai';
  2. import {cloneDeep} from './clone-deep.js';
  3. describe('cloneDeep', function () {
  4. it('returns a deep copy of a given object', function () {
  5. const value = {
  6. stringProp: 'string',
  7. numberProp: 10,
  8. booleanProp: true,
  9. arrayProp: [1, 2, 3],
  10. objectProp: {
  11. foo: 'string',
  12. bar: 'string',
  13. },
  14. dateProp: new Date(),
  15. nullProp: null,
  16. };
  17. const result = cloneDeep(value);
  18. expect(result).to.be.eql(value);
  19. expect(result).to.be.not.eq(value);
  20. expect(result.arrayProp).to.be.not.eq(value.arrayProp);
  21. expect(result.arrayProp).to.be.eql(value.arrayProp);
  22. expect(result.objectProp).to.be.not.eq(value.objectProp);
  23. expect(result.objectProp).to.be.eql(value.objectProp);
  24. expect(result.dateProp).to.be.not.eq(value.dateProp);
  25. expect(result.dateProp.getTime()).to.be.eq(value.dateProp.getTime());
  26. });
  27. });