I use Tapestry 5.0.18 and I can test Hibernate.
The classes that I use for testing are as follows:


//A Test Module in order to use a specific configuration on test environment
@SubModule( { AppModule.class })
public class AppTestModule {

public static void contributeApplicationDefaults(MappedConfiguration<String, String> configuration) {
                configuration.add(HibernateConstants.DEFAULT_CONFIGURATION, 
"false");
        }

public static void contributeHibernateSessionSource(OrderedConfiguration<HibernateConfigurer> config) {
                HibernateConfigurer conf = new HibernateConfigurer() {
                        public void configure(Configuration configuration) {
                                Configuration cfg = new Configuration();
                                Properties properties = new Properties();
                                try {
properties.load(AppTestModule.class.getResourceAsStream("/hibernate.properties"));
                                } catch (IOException e) {
                                        e.printStackTrace();
                                }
                                cfg.setProperties(properties);
                        }
                };
                config.add("Test", conf);
        }

}

//A class of tests
public class TestDataService extends Assert {

        private Registry registry;

        private DataService dataService;

        @BeforeSuite
        public void init() {
                RegistryBuilder builder = new RegistryBuilder();
                builder.add(HibernateModule.class);
                builder.add(AppTestModule.class);
                registry = builder.build();
                registry.performRegistryStartup();
                dataService = registry.getService(DataService.class);
        }

        @Test
        public void testHasUsersOnManageService() {
                boolean test= dataService.findSomething();
                assertTrue(test);
        }

        @AfterSuite
        void close() {
                registry.shutdown();
        }

}


Roberto.

Juan E. Maya ha scritto:
Hi Andrea, What version of tapestry are you working with?
As far as i know using tapestry 5.0 this is not possible (or at least
without a workaround) using tapestry 5.0.1 tapestry-hibernate-core now
support using tapestry-hibernate in standalone applications what makes it
possible to use in unit tests.

On Wed, Apr 1, 2009 at 12:59 PM, Andrea Chiumenti <kium...@gmail.com> wrote:

Hello I'm having problems understanding how to make tapestry-hibernate to
work:

I've created the following library module:

public class JFlyBusinessModule
{

   public static void bind(ServiceBinder binder)
   {
       binder.bind(CAuditDAO.class, CAuditDAOImpl.class);
       binder.bind(CClientDAO.class, CClientDAOImpl.class);
       binder.bind(CUserDAO.class, CUserDAOImpl.class);
       binder.bind(AuditService.class, AuditServiceImpl.class);
   }

   public static void
contributeAuditService(MappedConfiguration<String, String>
contributions)
   {
       contributions.add("log.level", IAuditType.TYPE_WARN);
   }
   public static void
contributeHibernateEntityPackageManager(Configuration<String>
configuration)
   {
       configuration.add("it.wingstech.jflymodel");
   }

   @Match(
   {
       "*DAO", "*Service"
   })
   public static <T> T
decorateTransactionally(HibernateTransactionDecorator decorator,
Class<T> serviceInterface,
           T delegate,
           String serviceId)
   {
       return decorator.build(serviceInterface, delegate, serviceId);
   }

}

then my service constructor is:
public AuditServiceImpl(Map<String, String> contributions, CAuditDAO
auditDao, Session session, Logger logger)
       {
               super(session, logger);
       this.auditDao = auditDao;
       setLevel(CommonUtils.oneOf(contributions.get("log.level"),
IAuditType.TYPE_INFO));

       }


when I try to start my tests I have the following message:
java.lang.RuntimeException: Exception constructing service
'AuditService': Error invoking constructor
it.wingstech.jflybusiness.services.AuditServiceImpl(Map, CAuditDAO,
Session, Logger) (at AuditServiceImpl.java:39) via
it.wingstech.jflybusiness.services.JFlyBusinessModule.bind(ServiceBinder)
(at JFlyBusinessModule.java:34) (for service 'AuditService'): No
service implements the interface org.hibernate.Session.

I've seen into the sourcess that there is no service for
org.hibernate.Session.

So I'm wondering how my service is different from the one contained
int tapestry-hibernate.
I also wonder How could I have a Session per request, then.

Please help me, 'cause I'm in a stale situation.

Thanks in advance,
kiuma

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org





---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to