Author: chatellier Date: 2010-01-08 10:45:28 +0000 (Fri, 08 Jan 2010) New Revision: 2890 Modified: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtilsTest.java Log: Use DOA method in test instead of beanutils (some get method need a non null topia context) Modified: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtilsTest.java =================================================================== --- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtilsTest.java 2010-01-08 10:38:34 UTC (rev 2889) +++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/ui/sensitivity/SensitivityUtilsTest.java 2010-01-08 10:45:28 UTC (rev 2890) @@ -25,10 +25,18 @@ import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.junit.Assert; import org.junit.Test; +import org.nuiton.topia.TopiaContext; +import org.nuiton.topia.TopiaContextFactory; +import org.nuiton.topia.TopiaException; +import org.nuiton.topia.TopiaNotFoundException; +import org.nuiton.topia.persistence.TopiaDAO; import org.nuiton.topia.persistence.TopiaEntity; import fr.ifremer.isisfish.AbstractIsisFishTest; +import fr.ifremer.isisfish.IsisFishDAOHelper; +import fr.ifremer.isisfish.datastore.IsisH2Config; /** * Test for {@link SensitivityUtils} class. @@ -46,6 +54,19 @@ .getLog(SensitivityUtilsTest.class); /** + * Return a basic valid topia context. + * + * @throws TopiaNotFoundException + */ + protected TopiaContext getTopiaContext() throws TopiaNotFoundException { + Properties config = new Properties(); + IsisH2Config.addMemDatabaseConfig(config, "test"); + IsisH2Config.addHibernateMapping(config); + TopiaContext context = TopiaContextFactory.getContext(config); + return context; + } + + /** * Test (par introspection) que tous les facteurs existent. * * @throws ClassNotFoundException @@ -55,19 +76,30 @@ * @throws SecurityException * @throws InvocationTargetException * @throws IllegalArgumentException + * @throws TopiaException */ @Test public void testFactorExistence() throws InstantiationException, IllegalAccessException, ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException, - InvocationTargetException { + InvocationTargetException, TopiaException { Properties factors = SensitivityUtils.getProperties(); + TopiaContext testTC = getTopiaContext(); + TopiaContext context = testTC.beginTransaction(); for (String factorName : factors.stringPropertyNames()) { String className = factorName.substring(0, factorName.indexOf(".")); String propertyName = StringUtils.capitalize(factorName.substring(factorName.indexOf(".") + 1)); - - TopiaEntity entity = (TopiaEntity)Class.forName("fr.ifremer.isisfish.entities." + className + "Impl").newInstance(); + // Simple method + // TopiaEntity entity = (TopiaEntity)Class.forName("fr.ifremer.isisfish.entities." + className + "Impl").newInstance(); + + // Harder method + // but topia context is needed by some getXXX() methods + Method mStatic = IsisFishDAOHelper.class.getMethod("get" + className + "DAO", TopiaContext.class); + TopiaDAO<TopiaEntity> dao = (TopiaDAO<TopiaEntity>) mStatic.invoke(null, new Object[] { context }); + Assert.assertNotNull("No DOA found for factor " + factorName, dao); + TopiaEntity entity = dao.create(); + // call proper property if (log.isDebugEnabled()) { log.debug(" and call get" + propertyName + "() on " + className); @@ -75,5 +107,6 @@ Method m = entity.getClass().getMethod("get" + propertyName); m.invoke(entity, (Object[]) null); } + context.closeContext(); } }