package egovframework.rte.itl.integration.metadata.dao.hibernate; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import javax.sql.DataSource; import org.dbunit.database.IDatabaseConnection; import org.dbunit.dataset.ReplacementDataSet; import org.dbunit.dataset.xml.FlatXmlDataSet; import org.dbunit.operation.DatabaseOperation; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.transaction.TransactionConfiguration; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ResourceUtils; import egovframework.rte.itl.integration.metadata.RecordTypeDefinition; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations="/egovframework/rte/itl/integration/metadata/dao/hibernate/context.xml") @TransactionConfiguration(defaultRollback=true) @Transactional(readOnly=false) public class HibernateRecordTypeDefinitionDaoTest { @Autowired private HibernateRecordTypeDefinitionDao dao; @Autowired private DataSource dataSource; @Before public void before() throws Exception { ReplacementDataSet dataSet = new ReplacementDataSet(new FlatXmlDataSet( ResourceUtils.getFile("classpath:egovframework/rte/itl/integration/metadata/dao/hibernate/dataset.xml"))); dataSet.addReplacementObject("[null]", null); IDatabaseConnection connection = new SpringDatabaseDataSourceConnection(dataSource); DatabaseOperation.CLEAN_INSERT.execute(connection, dataSet); } @Test public void testReadSucceeds() throws Exception { RecordTypeDefinition rtd0 = dao.getRecordTypeDefinition("M1"); assertNotNull(rtd0); assertTrue(rtd0.isValid()); assertEquals("M1", rtd0.getId()); assertNull(rtd0.getParent()); assertEquals(3, rtd0.getFields().size()); assertEquals("string", rtd0.getField("a").getTypeId()); assertEquals("integer", rtd0.getField("b").getTypeId()); assertEquals("boolean", rtd0.getField("c").getTypeId()); RecordTypeDefinition rtd1 = dao.getRecordTypeDefinition("M2"); assertNotNull(rtd1); assertTrue(rtd1.isValid()); assertEquals("M2", rtd1.getId()); assertNull(rtd1.getParent()); assertEquals(2, rtd1.getFields().size(), 2); assertEquals("string", rtd1.getField("d").getTypeId()); assertEquals("string", rtd1.getField("e").getTypeId()); RecordTypeDefinition rtd2 = dao.getRecordTypeDefinition("M3"); assertNotNull(rtd2); assertTrue(rtd2.isValid()); assertEquals("M3", rtd2.getId()); assertEquals(rtd1, rtd2.getParent()); assertEquals(2, rtd2.getFields().size(), 2); assertEquals("integer", rtd2.getField("f").getTypeId()); assertEquals("integer", rtd2.getField("g").getTypeId()); RecordTypeDefinition rtd3 = dao.getRecordTypeDefinition("M4"); assertNotNull(rtd3); assertTrue(rtd3.isValid()); assertEquals("M4", rtd3.getId()); assertEquals(rtd1, rtd3.getParent()); assertEquals(2, rtd3.getFields().size()); assertEquals("integer", rtd3.getField("d").getTypeId()); assertEquals("integer", rtd3.getField("f").getTypeId()); } @Test public void testReadFails() throws Exception { RecordTypeDefinition rtd = dao.getRecordTypeDefinition("x"); assertNull(rtd); } }