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);
});
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); });