/*
* This code is distributed under The GNU Lesser General Public License (LGPLv3)
* Please visit GNU site for LGPLv3 http://www.gnu.org/copyleft/lesser.html
*
* Copyright Denis Pavlov 2009
* Web: http://www.genericdtoassembler.org
* SVN: https://svn.code.sf.net/p/geda-genericdto/code/trunk/
* SVN (mirror): http://geda-genericdto.googlecode.com/svn/trunk/
*/
package com.inspiresoftware.lib.dto.geda.benchmark.dto;
import com.inspiresoftware.lib.dto.geda.adapter.BeanFactory;
import com.inspiresoftware.lib.dto.geda.assembler.Assembler;
import com.inspiresoftware.lib.dto.geda.assembler.DTOAssembler;
import com.inspiresoftware.lib.dto.geda.benchmark.data.DataProvider;
import com.inspiresoftware.lib.dto.geda.benchmark.domain.Person;
import com.inspiresoftware.lib.dto.geda.benchmark.support.geda.GeDABeanFactory;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* .
* <p/>
* User: denispavlov
* Date: Sep 17, 2012
* Time: 8:50:03 AM
*/
public class GeDAMappingTest {
@Test
public void testBasicMapping() throws Exception {
final BeanFactory bf = new GeDABeanFactory();
final Person entity = DataProvider.providePersonEntity(false);
final PersonDTO dto = new PersonDTO();
final Assembler asm = DTOAssembler.newAssembler(PersonDTO.class, Person.class, this.getClass().getClassLoader());
asm.assembleDto(dto, entity, null, bf);
assertEquals(dto.getFirstName(), "Sherlock");
assertEquals(dto.getLastName(), "Holmes");
final AddressDTO addressDTO = dto.getCurrentAddress();
assertNotNull(addressDTO);
assertEquals(addressDTO.getAddressLine1(), "221B Baker Street");
assertNull(addressDTO.getAddressLine2());
assertEquals(addressDTO.getCity(), "London");
assertEquals(addressDTO.getCountryName(), "United Kingdom");
assertEquals(addressDTO.getPostCode(), "NW1 6XE");
}
@Test
public void testCollectionsMapping() throws Exception {
final BeanFactory bf = new GeDABeanFactory();
final Person entity = DataProvider.providePersonEntity(true);
final PersonWithHistoryDTO dto = new PersonWithHistoryDTO();
final Assembler asm = DTOAssembler.newAssembler(PersonWithHistoryDTO.class, Person.class, this.getClass().getClassLoader());
asm.assembleDto(dto, entity, null, bf);
assertEquals(dto.getFirstName(), "Sherlock");
assertEquals(dto.getLastName(), "Holmes");
final AddressDTO addressDTO = dto.getCurrentAddress();
assertNotNull(addressDTO);
assertEquals(addressDTO.getAddressLine1(), "221B Baker Street");
assertNull(addressDTO.getAddressLine2());
assertEquals(addressDTO.getCity(), "London");
assertEquals(addressDTO.getCountryName(), "United Kingdom");
assertEquals(addressDTO.getPostCode(), "NW1 6XE");
assertNotNull(dto.getPreviousAddresses());
assertEquals(2, dto.getPreviousAddresses().size());
final AddressDTO prev1 = dto.getPreviousAddresses().get(0);
assertNotNull(prev1);
assertEquals(prev1.getAddressLine1(), "221B Baker Street");
assertNull(prev1.getAddressLine2());
assertEquals(prev1.getCity(), "London");
assertEquals(prev1.getCountryName(), "United Kingdom");
assertEquals(prev1.getPostCode(), "NW1 6XE");
final AddressDTO prev2 = dto.getPreviousAddresses().get(1);
assertNotNull(prev2);
assertEquals(prev2.getAddressLine1(), "Baskerville Hall");
assertNull(prev2.getAddressLine2());
assertEquals(prev2.getCity(), "Hay-on-Wye");
assertEquals(prev2.getCountryName(), "United Kingdom");
assertEquals(prev2.getPostCode(), "HR3 5LE");
}
@Test
public void testMapsMapping() throws Exception {
final BeanFactory bf = new GeDABeanFactory();
final Person entity = DataProvider.providePersonEntity(true);
final PersonWithHistoryByCityDTO dto = new PersonWithHistoryByCityDTO();
final Assembler asm = DTOAssembler.newAssembler(PersonWithHistoryByCityDTO.class, Person.class, this.getClass().getClassLoader());
asm.assembleDto(dto, entity, null, bf);
assertEquals(dto.getFirstName(), "Sherlock");
assertEquals(dto.getLastName(), "Holmes");
final AddressDTO addressDTO = dto.getCurrentAddress();
assertNotNull(addressDTO);
assertEquals(addressDTO.getAddressLine1(), "221B Baker Street");
assertNull(addressDTO.getAddressLine2());
assertEquals(addressDTO.getCity(), "London");
assertEquals(addressDTO.getCountryName(), "United Kingdom");
assertEquals(addressDTO.getPostCode(), "NW1 6XE");
assertNotNull(dto.getPreviousAddresses());
assertEquals(2, dto.getPreviousAddresses().size());
final AddressDTO prev1 = dto.getPreviousAddresses().get("London");
assertNotNull(prev1);
assertEquals(prev1.getAddressLine1(), "221B Baker Street");
assertNull(prev1.getAddressLine2());
assertEquals(prev1.getCity(), "London");
assertEquals(prev1.getCountryName(), "United Kingdom");
assertEquals(prev1.getPostCode(), "NW1 6XE");
final AddressDTO prev2 = dto.getPreviousAddresses().get("Hay-on-Wye");
assertNotNull(prev2);
assertEquals(prev2.getAddressLine1(), "Baskerville Hall");
assertNull(prev2.getAddressLine2());
assertEquals(prev2.getCity(), "Hay-on-Wye");
assertEquals(prev2.getCountryName(), "United Kingdom");
assertEquals(prev2.getPostCode(), "HR3 5LE");
}
}