loedeman / AutoMapper

A convention-based object-object mapper in JavaScript, written in TypeScript. Ported from: https://github.com/AutoMapper/AutoMapper
MIT License
311 stars 36 forks source link

New instance of nested object is not created instead the original is referred in the destination #40

Open mamukundan opened 7 years ago

mamukundan commented 7 years ago

In the below example, a new Address object is not created and populated with values and then attached to the personDTO object. Instead, the address object, that is attached to the person is referred in the personDTO object as well.

'use strict';

import { expect } from "chai"; import { } from "automapper-ts";

it('should map nested objects correctly', () => { class Person{ name: string; age: number; address: Address; } class PersonDTO{ name: string; address: Address; } class Address{ street: string; pincode: number; } let address: Address = new Address(); address.street = "Seaside Lane"; address.pincode = 51241; let person: Person = new Person(); person.name = "John Doe"; person.address = address; let sourceKey = "Person"; let destinationKey = "PersonDTO"; automapper.createMap(sourceKey, destinationKey); let personDTO: PersonDTO = automapper.map(sourceKey, destinationKey, person); console.log(person.address.pincode); console.log(personDTO.address.pincode); personDTO.address.pincode=0; //if i change the address in personDTO it impacts address in person as well console.log(person.address.pincode); console.log(personDTO.address.pincode); expect(personDTO.name).to.equal(person.name); expect(personDTO.address.street).to.equal(person.address.street); expect(personDTO.address.pincode).to.equal(person.address.pincode); });

oehm-smith commented 5 years ago

Eeeks, can you format this @mamukundan and show the output?