diff --git a/test/index.js b/test/index.js index f104c49..c73aedf 100644 --- a/test/index.js +++ b/test/index.js @@ -2,8 +2,9 @@ import test from 'ava' import {findAndReplace, findAndReplaceIf} from '../dist/index.cjs' test('findAndReplace', t => { - let res - res = findAndReplace({a: {b: {c: 'a'}}}, 'a', 'b') + let res, ori + ori = {a: {b: {c: 'a'}}} + res = findAndReplace(ori, 'a', 'b') t.deepEqual(res, {a: {b: {c: 'b'}}}) res = findAndReplace('_', 'a', 'b') t.is(res, '_') @@ -11,6 +12,31 @@ test('findAndReplace', t => { t.is(res, 'b') }) +test('findAndReplace does not modify objects', t => { + let res, ori + ori = {a: {b: {c: 'a'}, d: 1}} + res = findAndReplace(ori, 'a', 'b') + t.deepEqual(res, {a: {b: {c: 'b'}, d: 1}}) + t.deepEqual(ori, {a: {b: {c: 'a'}, d: 1}}) + res.a.b = 1 + t.deepEqual(res, {a: {b: 1, d: 1}}) + t.deepEqual(ori, {a: {b: {c: 'a'}, d: 1}}) + res.a.d = 2 + t.deepEqual(res, {a: {b: 1, d: 2}}) + t.deepEqual(ori, {a: {b: {c: 'a'}, d: 1}}) + ori.a.d = 3 + t.deepEqual(res, {a: {b: 1, d: 2}}) + t.deepEqual(ori, {a: {b: {c: 'a'}, d: 3}}) +}) + +test('findAndReplace does not work with objects', t => { + let res, ori + ori = {a: {b: {c: 'a'}}} + res = findAndReplace(ori, {c: 'a'}, {c: 'b'}) + t.deepEqual(res, {a: {b: {c: 'a'}}}) + t.deepEqual(ori, {a: {b: {c: 'a'}}}) +}) + test('findAndReplaceIf', t => { let res function checkFn (foundVal) {