/** * Copyright (C) 2008-2010, Squale Project - http://www.squale.org * * This file is part of Squale. * * Squale is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation, either version 3 of the * License, or any later version. * * Squale is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with Squale. If not, see <http://www.gnu.org/licenses/>. */ package org.squale.squalecommon.daolayer.message; import java.util.Calendar; import java.util.Collection; import java.util.Date; import java.util.Iterator; import org.squale.jraf.commons.exception.JrafDaoException; import org.squale.jraf.commons.exception.JrafPersistenceException; import org.squale.jraf.helper.PersistenceHelper; import org.squale.jraf.spi.persistence.IPersistenceProvider; import org.squale.jraf.spi.persistence.ISession; import org.squale.squalecommon.SqualeTestCase; import org.squale.squalecommon.enterpriselayer.businessobject.message.MessageBO; import org.squale.squalecommon.enterpriselayer.businessobject.message.MessageId; import org.squale.squalecommon.enterpriselayer.businessobject.message.NewsBO; /** * */ public class NewsDAOImplTest extends SqualeTestCase { /** le bo */ private NewsBO bo; /** un message BO pour tester */ private MessageBO messBo; /** provider de persistence */ private static IPersistenceProvider PERSISTENT_PROVIDER; /** * setUp le test * * @throws Exception en cas d'�chec */ public void setUp() throws Exception { super.setUp(); Calendar calendar = Calendar.getInstance(); calendar.set( Calendar.MONTH, Calendar.AUGUST ); calendar.set( Calendar.YEAR, 2005 ); Date begin = calendar.getTime(); calendar.set( Calendar.YEAR, 2007 ); Date end = calendar.getTime(); bo = new NewsBO(); bo.setId( 1 ); bo.setBeginningDate( begin ); bo.setEndDate( end ); bo.setKey( "test" ); messBo = new MessageBO(); messBo.setKey( "rule.test" ); messBo.setText( "Text" ); messBo.setTitle( "title" ); messBo.setLang( "en" ); MessageId id = new MessageId(); id.setKey( messBo.getKey() ); id.setLang( messBo.getLang() ); messBo.setId( id ); } /** * Test la cr�ation et l'enregistrement en base d'un newsBO et de son messageBO */ public void testAddNews() { PERSISTENT_PROVIDER = PersistenceHelper.getPersistenceProvider(); ISession session; NewsDAOImpl dao = NewsDAOImpl.getInstance(); try { session = PERSISTENT_PROVIDER.getSession(); session.beginTransaction(); Collection coll = dao.findAll( session ); // on v�rifie qu'on en r�cup�re bien 0 car pour l'instant il n'y en a pas en session assertEquals( coll.size(), 0 ); // on en sauvegarde 1 dao.addNews( session, bo, messBo ); session.commitTransactionWithoutClose(); // apr�s avoir commit�, on v�rifie qu'il a bien �t� // enregistr� et qu'on peut le r�cup�rer session.beginTransaction(); coll = dao.findAll( session ); session.commitTransaction(); // v�rification assertEquals( coll.size(), 1 ); } catch ( JrafPersistenceException e ) { fail( "unexpectedException" ); e.printStackTrace(); } catch ( JrafDaoException e ) { fail( "unexpectedException" ); e.printStackTrace(); } } /** * Test la cr�ation et l'enregistrement en base d'un newsBO et de son messageBO */ public void testModifyNews() { PERSISTENT_PROVIDER = PersistenceHelper.getPersistenceProvider(); ISession session; NewsDAOImpl dao = NewsDAOImpl.getInstance(); try { session = PERSISTENT_PROVIDER.getSession(); session.beginTransaction(); Collection coll = dao.findAll( session ); // on v�rifie qu'on en r�cup�re bien 0 car pour l'instant il n'y en a pas en session assertEquals( coll.size(), 0 ); // on en sauvegarde 1 dao.addNews( session, bo, messBo ); session.commitTransactionWithoutClose(); // apr�s avoir commit�, on v�rifie qu'il a bien �t� // enregistr� et qu'on peut le r�cup�rer session.beginTransaction(); coll = dao.findAll( session ); session.commitTransactionWithoutClose(); // v�rification assertEquals( coll.size(), 1 ); // Modification session.beginTransaction(); bo.setKey( "test.modification" ); messBo.setKey( "test.modification.messageKey" ); dao.modifyNews( session, bo, messBo ); session.commitTransactionWithoutClose(); session.beginTransaction(); coll = dao.findAll( session ); session.commitTransaction(); // On ne doit toujours qu'en avoir qu'un // le meme mais avec la cl� modifi�e assertEquals( coll.size(), 1 ); Iterator it = coll.iterator(); NewsBO newBo = (NewsBO) it.next(); // on v�rifie que la cl� a bien �t� modifi�e assertEquals( newBo.getKey(), "test.modification" ); } catch ( JrafPersistenceException e ) { fail( "unexpectedException" ); e.printStackTrace(); } catch ( JrafDaoException e ) { fail( "unexpectedException" ); e.printStackTrace(); } } /** * Test la cr�ation et l'enregistrement en base d'un newsBO et de son messageBO */ public void testPurgeNews() { PERSISTENT_PROVIDER = PersistenceHelper.getPersistenceProvider(); ISession session; NewsDAOImpl dao = NewsDAOImpl.getInstance(); try { session = PERSISTENT_PROVIDER.getSession(); session.beginTransaction(); Collection coll = dao.findAll( session ); // on v�rifie qu'on en r�cup�re bien 0 car pour l'instant il n'y en a pas en session assertEquals( coll.size(), 0 ); // on en sauvegarde 1 dao.addNews( session, bo, messBo ); session.commitTransactionWithoutClose(); // apr�s avoir commit�, on v�rifie qu'il a bien �t� // enregistr� et qu'on peut le r�cup�rer session.beginTransaction(); coll = dao.findAll( session ); session.commitTransactionWithoutClose(); // v�rification assertEquals( coll.size(), 1 ); Iterator it = coll.iterator(); NewsBO newBo = (NewsBO) it.next(); session.beginTransaction(); dao.removeNews( session, newBo, messBo ); session.commitTransactionWithoutClose(); // on v�rifie que la suppression a bien �t� faite session.beginTransaction(); coll = dao.findAll( session ); session.commitTransaction(); // v�rification assertEquals( coll.size(), 0 ); } catch ( JrafPersistenceException e ) { fail( "unexpectedException" ); e.printStackTrace(); } catch ( JrafDaoException e ) { fail( "unexpectedException" ); e.printStackTrace(); } } /** * Test la r�cup�ration en base de news en fonction de leurs cat�gories (toutes, les courantes, les anciennes) */ public void testFindWhereKind() { PERSISTENT_PROVIDER = PersistenceHelper.getPersistenceProvider(); ISession session; NewsDAOImpl dao = NewsDAOImpl.getInstance(); MessageDAOImpl messDao = MessageDAOImpl.getInstance(); Collection coll; try { session = PERSISTENT_PROVIDER.getSession(); session.beginTransaction(); // on en sauvegarde 1 dao.addNews( session, bo, messBo ); session.commitTransactionWithoutClose(); session.beginTransaction(); coll = dao.findWhereKind( session, "all" ); session.commitTransactionWithoutClose(); assertTrue( coll.size() > 0 ); /* * le todate ne marche pas en test unitaire on ne peut pas effectuer les tests suivants * session.beginTransaction(); coll = dao.findWhereKind(session, "old"); * session.commitTransactionWithoutClose(); assertTrue(coll.size() == 0); session.beginTransaction(); coll = * dao.findWhereKind(session, "current"); session.commitTransaction(); assertTrue(coll.size() > 0); */ } catch ( JrafPersistenceException e ) { fail( "unexpectedException" ); e.printStackTrace(); } catch ( JrafDaoException e ) { fail( "unexpectedException" ); e.printStackTrace(); } } }