/** * 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.profile; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import org.squale.jraf.provider.persistence.hibernate.facade.FacadeHelper; import org.squale.squalecommon.SqualeTestCase; import org.squale.squalecommon.enterpriselayer.businessobject.component.ApplicationBO; import org.squale.squalecommon.enterpriselayer.businessobject.profile.ProfileBO; import org.squale.squalecommon.enterpriselayer.businessobject.profile.UserBO; /** * Tests du DAO user */ public class UserDAOImplTest extends SqualeTestCase { /** * */ final public void testLoadWithMatricule() { try { getSession().beginTransaction(); UserBO user = getComponentFactory().createUser( getSession() ); UserDAOImpl userDAO = UserDAOImpl.getInstance(); user = userDAO.loadWithMatricule( getSession(), user.getMatricule() ); assertNotNull( user ); user = userDAO.loadWithMatricule( getSession(), "nimportequoi" ); assertNull( user ); FacadeHelper.closeSession( getSession(), "" ); } catch ( Exception e ) { e.printStackTrace(); fail( "unexpected exception" ); } } /** * */ final public void testFindWhereAdmin() { try { getSession().beginTransaction(); UserDAOImpl userDAO = UserDAOImpl.getInstance(); Collection col = userDAO.findWhereAdmin( getSession(), false, true ); assertEquals( 0, col.size() ); UserBO user = getComponentFactory().createUser( getSession() ); // On le d�sabonne de l'envoi des mails user.setUnsubscribed( true ); userDAO.save( getSession(), user ); col = userDAO.findWhereAdmin( getSession(), false, true ); // 1 car on on a r�cup�r� aussi les d�sabonn� assertEquals( 1, col.size() ); // 0 car l'administrateur n'est pas abonn� col = userDAO.findWhereAdmin( getSession(), false, false ); assertEquals( 0, col.size() ); FacadeHelper.closeSession( getSession(), "" ); } catch ( Exception e ) { e.printStackTrace(); fail( "unexpected exception" ); } } /** * Teste la r�cup�ration d'administrateurs ayant un email d�fini */ final public void testFindAdminsWithEmails() { try { getSession().beginTransaction(); UserDAOImpl userDAO = UserDAOImpl.getInstance(); Collection col = userDAO.findWhereAdminAndHaveEmails( getSession(), true ); assertEquals( 0, col.size() ); // on cr�e 2 utilisateurs dont un sans email et on // v�rifie qu'on r�cup�re bien seulement celui qui a un email UserBO user = getComponentFactory().createUser( getSession() ); user.setEmail( "test@Junit.fr" ); // On le d�sabonne de l'envoi des mails user.setUnsubscribed( true ); UserBO userWithoutMail = getComponentFactory().createUser( getSession() ); col = userDAO.findWhereAdminAndHaveEmails( getSession(), true ); assertEquals( 1, col.size() ); assertTrue( ( (UserBO) ( (Iterator) ( col.iterator() ) ).next() ).getEmail() != null ); // On ne r�cup�re pas les d�sabonn�s col = userDAO.findWhereAdminAndHaveEmails( getSession(), false ); assertEquals( 0, col.size() ); } catch ( Exception e ) { e.printStackTrace(); fail( "unexpected exception" ); } } /** * test la r�cup�ration des utilisateurs selon les droits et les mails */ final public void testFindWhereApplicationAndProfileAndHaveEmails() { try { getSession().beginTransaction(); // On cr�e une application qui aura un manager et un lecteur ApplicationBO appli = getComponentFactory().createApplication( getSession() ); // On cr�e les deux profils lecteur et manager ProfileDAOImpl profileDAO = ProfileDAOImpl.getInstance(); ProfileBO managerProfile = new ProfileBO(); managerProfile.setName( ProfileBO.MANAGER_PROFILE_NAME ); managerProfile.setRights( new HashMap() ); ProfileBO readerProfile = new ProfileBO(); readerProfile.setName( ProfileBO.READER_PROFILE_NAME ); readerProfile.setRights( new HashMap() ); profileDAO.create( getSession(), managerProfile ); profileDAO.create( getSession(), readerProfile ); Long appliId = new Long( appli.getId() ); UserDAOImpl userDAO = UserDAOImpl.getInstance(); Collection col = userDAO.findWhereApplicationAndProfileAndHaveEmails( getSession(), appliId, managerProfile, true ); assertEquals( 0, col.size() ); // on cr�e 3 utilisateurs : 2 managers dont un sans email et 1 lecteur avec mail UserBO manager = getComponentFactory().createUser( getSession() ); manager.setDefaultProfile( managerProfile ); manager.setEmail( "manager@Junit.fr" ); // On le d�sabonne de l'envoi des mails manager.setUnsubscribed( true ); // On lui affecte le droit manager sur l'application manager.getRights().put( appli, managerProfile ); UserBO managerWithoutMail = getComponentFactory().createUser( getSession() ); managerWithoutMail.setDefaultProfile( managerProfile ); // On lui affecte le droit lecteur sur l'application managerWithoutMail.getRights().put( appli, managerProfile ); UserBO reader = getComponentFactory().createUser( getSession() ); reader.setDefaultProfile( managerProfile ); reader.setEmail( "reader@Junit.fr" ); // On le d�sabonne de l'envoi des mails reader.setUnsubscribed( true ); // On lui affecte le droit lecteur sur l'application reader.getRights().put( appli, readerProfile ); // On r�cup�re tous les managers de l'application qui ont un mail --> 1 seul col = userDAO.findWhereApplicationAndProfileAndHaveEmails( getSession(), appliId, managerProfile, true ); assertEquals( 1, col.size() ); assertEquals( "manager@Junit.fr", ( (UserBO) col.iterator().next() ).getEmail() ); // On r�cup�re tous les managers de l'application qui ont un mail et qui sont abonn� � l'envoi // automatique --> 0 col = userDAO.findWhereApplicationAndProfileAndHaveEmails( getSession(), appliId, managerProfile, false ); assertEquals( 0, col.size() ); // On r�cup�re tous les lecteurs de l'application qui ont un mail --> 1 seul col = userDAO.findWhereApplicationAndProfileAndHaveEmails( getSession(), appliId, readerProfile, true ); assertEquals( 1, col.size() ); assertEquals( "reader@Junit.fr", ( (UserBO) col.iterator().next() ).getEmail() ); // On r�cup�re tous les lecteurs de l'application qui ont un mail et qui sont abonn� � l'envoi // automatique --> 0 col = userDAO.findWhereApplicationAndProfileAndHaveEmails( getSession(), appliId, readerProfile, false ); assertEquals( 0, col.size() ); } catch ( Exception e ) { e.printStackTrace(); fail( "unexpected exception" ); } } }