package de.juwimm.cms.test.hibernate; import java.util.ArrayList; import java.util.Collection; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.easymock.EasyMock; import org.junit.Assert; import org.springframework.beans.factory.annotation.Autowired; import de.juwimm.cms.authorization.model.UserHbm; import de.juwimm.cms.authorization.model.UserHbmDao; import de.juwimm.cms.authorization.model.UserHbmImpl; import de.juwimm.cms.components.model.AddressHbm; import de.juwimm.cms.components.model.AddressHbmImpl; import de.juwimm.cms.components.model.DepartmentHbm; import de.juwimm.cms.components.model.DepartmentHbmDao; import de.juwimm.cms.components.model.DepartmentHbmImpl; import de.juwimm.cms.components.model.PersonHbm; import de.juwimm.cms.components.model.PersonHbmDao; import de.juwimm.cms.components.model.PersonHbmImpl; import de.juwimm.cms.components.model.TalktimeHbm; import de.juwimm.cms.components.model.TalktimeHbmDao; import de.juwimm.cms.components.model.TalktimeHbmImpl; import de.juwimm.cms.model.SiteHbm; import de.juwimm.cms.model.SiteHbmImpl; import de.juwimm.cms.model.UnitHbm; import de.juwimm.cms.model.UnitHbmDao; import de.juwimm.cms.model.UnitHbmDaoImpl; import de.juwimm.cms.model.UnitHbmImpl; import de.juwimm.cms.vo.UnitValue; public class UnitDaoTest extends HbmTestImpl { private static final Log log = LogFactory.getLog(UnitDaoTest.class); @Autowired UnitHbmDao unitDao; UserHbmDao userDao; TalktimeHbmDao talktimeDao; PersonHbmDao personDao; DepartmentHbmDao departmentDao; public void initializeServiceBeans() { // TODO Auto-generated method stub } @Override protected void onSetUp() throws Exception { super.onSetUp(); mockAuthetication(); userDao = EasyMock.createMock(UserHbmDao.class); ((UnitHbmDaoImpl) unitDao).setUserHbmDao(userDao); talktimeDao = EasyMock.createMock(TalktimeHbmDao.class); ((UnitHbmDaoImpl) unitDao).setTalktimeHbmDao(talktimeDao); personDao = EasyMock.createMock(PersonHbmDao.class); ((UnitHbmDaoImpl) unitDao).setPersonHbmDao(personDao); departmentDao = EasyMock.createMock(DepartmentHbmDao.class); ((UnitHbmDaoImpl) unitDao).setDepartmentHbmDao(departmentDao); } /** * Test Create * expect: assign site, assign id */ public void testCreate() { SiteHbm site = new SiteHbmImpl(); site.setSiteId(1); UserHbm user = new UserHbmImpl(); user.setUserId("testUser"); user.setActiveSite(site); UnitHbm unit = new UnitHbmImpl(); unit.setName("testUnit"); unit.setColour("Red"); try { EasyMock.expect(userDao.load(EasyMock.eq("testUser"))).andReturn(user); } catch (Exception e) { log.error("Exception on unit creation test", e); Assert.assertTrue(false); } EasyMock.replay(userDao); try { unit = unitDao.create(unit); Assert.assertNotNull(unit.getUnitId()); Assert.assertNotNull(unit.getSite()); Assert.assertNotNull(unit.getLastModifiedDate()); } catch (Exception e) { log.error("Exception on unit creation test", e); Assert.assertTrue(false); } EasyMock.verify(userDao); } /** * Test GetDao * expect: a UnitValue object with the properties set correctly. */ public void testGetDao() { SiteHbm site = new SiteHbmImpl(); site.setSiteId(1); UnitHbm unit = new UnitHbmImpl(); unit.setUnitId(1); unit.setImageId(1); unit.setLogoId(1); unit.setName("testUnit"); unit.setSite(site); AddressHbm address = new AddressHbmImpl(); address.setAddressId(new Long(1)); AddressHbm address1 = new AddressHbmImpl(); address1.setAddressId(new Long(2)); Collection<AddressHbm> addresses = new ArrayList<AddressHbm>(); addresses.add(address); addresses.add(address1); unit.setAddresses(addresses); TalktimeHbm talktime = new TalktimeHbmImpl(); talktime.setTalkTimeId(new Long(1)); Collection<TalktimeHbm> talktimeCollection = new ArrayList<TalktimeHbm>(); talktimeCollection.add(talktime); PersonHbm person = new PersonHbmImpl(); person.setPersonId(new Long(1)); Collection<PersonHbm> persons = new ArrayList<PersonHbm>(); persons.add(person); DepartmentHbm department = new DepartmentHbmImpl(); department.setDepartmentId(new Long(1)); Collection<DepartmentHbm> departments = new ArrayList<DepartmentHbm>(); departments.add(department); unit.setDepartments(departments); try { EasyMock.expect(talktimeDao.findByUnit(EasyMock.eq(1))).andReturn(talktimeCollection); //EasyMock.expect(personDao.findByUnit(EasyMock.eq(1))).andReturn(persons); } catch (Exception e) { Assert.assertTrue(false); } EasyMock.replay(talktimeDao); //EasyMock.replay(personDao); try { UnitValue unitValue = unitDao.getDao(unit); Assert.assertNotNull(unitValue); Assert.assertEquals(2, unitValue.getAddresses().length); Assert.assertEquals(1, unitValue.getTalkTimes().length); Assert.assertEquals(1, unitValue.getDepartments().length); Assert.assertTrue(unitValue.isHasChildren()); } catch (Exception e) { Assert.assertTrue(false); } EasyMock.verify(talktimeDao); //EasyMock.verify(personDao); } /** * Test ToXmlRecursive * expect: the unit doesn't have no persons,talktime,departments, or addresses * the xml will contain the rest of the data assigned to unit * */ public void testToXmlRecursive() { UnitHbm unit = new UnitHbmImpl(); unit.setUnitId(1); unit.setName("testUnit"); unit.setColour("testColour"); unit.setImageId(1); unit.setLogoId(1); unit.setLastModifiedDate(0); SiteHbm site = new SiteHbmImpl(); site.setSiteId(1); site.setRootUnit(unit); unit.setSite(site); Collection<PersonHbm> persons = new ArrayList<PersonHbm>(); Collection<TalktimeHbm> talktimes = new ArrayList<TalktimeHbm>(); try { EasyMock.expect(talktimeDao.findByUnit(EasyMock.eq(1))).andReturn(talktimes); EasyMock.expect(personDao.findByUnit(EasyMock.eq(1))).andReturn(persons); } catch (Exception e) { Assert.assertTrue(false); } EasyMock.replay(talktimeDao); EasyMock.replay(personDao); try { String result = unitDao.toXmlRecursive(1, unit); String expected = "<unit id=\"1\" imageId=\"1\" logoId=\"1\" colour=\"testColour\" isRootUnit=\"true\"><![CDATA[testUnit]]>\n</unit>\n"; Assert.assertNotNull(result); Assert.assertEquals(expected, result); } catch (Exception e) { Assert.assertTrue(false); } } }