29 lines
896 B
JavaScript
29 lines
896 B
JavaScript
|
import clone from '@/utils/clone'
|
||
|
|
||
|
describe('clone', () => {
|
||
|
it('Basic objects stay the same', () => {
|
||
|
const obj = { a: 123, b: 'hello' }
|
||
|
expect(clone(obj)).toEqual(obj)
|
||
|
})
|
||
|
|
||
|
it('Basic nested objects stay the same', () => {
|
||
|
const obj = { a: 123, b: { c: 'hello-world' } }
|
||
|
expect(clone(obj)).toEqual(obj)
|
||
|
})
|
||
|
|
||
|
it('Simple pojo reference types are re-created', () => {
|
||
|
const c = { c: 'hello-world' }
|
||
|
expect(clone({ a: 123, b: c }).b === c).toBe(false)
|
||
|
})
|
||
|
|
||
|
it('Retains array structures inside of a pojo', () => {
|
||
|
const obj = { a: 'abcd', d: ['first', 'second'] }
|
||
|
expect(Array.isArray(clone(obj).d)).toBe(true)
|
||
|
})
|
||
|
|
||
|
it('Removes references inside array structures', () => {
|
||
|
const obj = { a: 'abcd', d: ['first', { foo: 'bar' }] }
|
||
|
expect(clone(obj).d[1] === obj.d[1]).toBe(false)
|
||
|
})
|
||
|
})
|