File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 2323
2424var arrify = require ( 'arrify' ) ;
2525var createErrorClass = require ( 'create-error-class' ) ;
26+ var extend = require ( 'extend' ) ;
2627var is = require ( 'is' ) ;
2728
2829var entity = module . exports ;
@@ -285,6 +286,8 @@ function encodeValue(value) {
285286
286287 if ( is . object ( value ) ) {
287288 if ( ! is . empty ( value ) ) {
289+ value = extend ( true , { } , value ) ;
290+
288291 for ( var prop in value ) {
289292 if ( value . hasOwnProperty ( prop ) ) {
290293 value [ prop ] = entity . encodeValue ( value [ prop ] ) ;
Original file line number Diff line number Diff line change @@ -21,6 +21,7 @@ var deepStrictEqual = require('deep-strict-equal');
2121assert . deepStrictEqual = assert . deepStrictEqual || function ( ) {
2222 return assert ( deepStrictEqual . apply ( this , arguments ) ) ;
2323} ;
24+ var extend = require ( 'extend' ) ;
2425
2526var Datastore = require ( '../' ) ;
2627
@@ -430,6 +431,23 @@ describe('entity', function() {
430431 assert . deepEqual ( entity . encodeValue ( value ) , expectedValueProto ) ;
431432 } ) ;
432433
434+ it ( 'should clone an object' , function ( ) {
435+ var value = {
436+ a : {
437+ b : {
438+ obj : true
439+ }
440+ }
441+ } ;
442+
443+ var originalValue = extend ( true , { } , value ) ;
444+
445+ var encodedValue = entity . encodeValue ( value ) ;
446+
447+ assert . deepEqual ( value , originalValue ) ;
448+ assert . notStrictEqual ( value , encodedValue ) ;
449+ } ) ;
450+
433451 it ( 'should encode an empty object' , function ( ) {
434452 var value = { } ;
435453
You can’t perform that action at this time.
0 commit comments