package net.sourceforge.seqware.common.business.impl; import java.util.List; import javax.naming.NamingException; import net.sourceforge.seqware.common.BaseUnit; import net.sourceforge.seqware.common.business.ExperimentService; import net.sourceforge.seqware.common.factory.BeanFactory; import net.sourceforge.seqware.common.hibernate.InSessionExecutions; import net.sourceforge.seqware.common.model.Experiment; import net.sourceforge.seqware.common.util.Log; import net.sourceforge.seqware.common.util.testtools.BasicTestDatabaseCreatorWrapper; import org.hibernate.Session; import org.junit.AfterClass; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import org.junit.Test; /** * <p> * ExperimentServiceImplTest class. * </p> * * @author boconnor * @version $Id: $Id * @since 0.13.3 */ public class ExperimentServiceImplTest extends BaseUnit { /** * <p> * Constructor for ExperimentServiceImplTest. * </p> * * @throws java.lang.Exception * if any. */ public ExperimentServiceImplTest() throws Exception { super(); } /** * <p> * tearDown. * </p> * * @throws javax.naming.NamingException * if any. */ @AfterClass public static void tearDown() throws NamingException { } /** * <p> * testFindByTitle. * </p> */ @Test public void testFindByTitle() { ExperimentService experimentService = BeanFactory.getExperimentServiceBean(); Experiment experiment = experimentService.findByTitle("MixExp1"); assertNotNull(experiment); Experiment experimentCaseInsensitive = experimentService.findByTitle("mixexp1"); assertNotNull(experimentCaseInsensitive); assertEquals(experiment.getTitle(), experimentCaseInsensitive.getTitle()); } // @Test // public void testFindByOwnerId() { // Registration r = registrationService.findByEmailAddressAndPassword(email, password); // assertNotNull(r); // List<Experiment> experiments = BeanFactory.getExperimentServiceBean().findByOwnerID(r.getRegistrationId()); // assertNotNull(experiments); // Log.info("Count: " + experiments.size()); // // Must be 3 experiments for that registrationId // assertEquals("Expected 3, got "+experiments.size(), 3, experiments.size()); // } /** * <p> * testFindBySWAccession. * </p> */ @Test public void testFindBySWAccession() { Experiment experiment = BeanFactory.getExperimentServiceBean().findBySWAccession(834); assertNotNull(experiment); assertEquals("Sample_Exome_ABC015068", experiment.getTitle()); } /** * <p> * testNoLazyInitializationException. * </p> */ @Test public void testNoLazyInitializationException() { // Bind Session to the thread to prevent LazyInitializationException InSessionExecutions.bindSessionToThread(); Experiment experiment = BeanFactory.getExperimentServiceBean().findByID(6); Log.info("Owner is " + experiment.getOwner().getFirstName()); InSessionExecutions.unBindSessionFromTheThread(); } /** * <p> * testUpdateDetached. * </p> */ @Test public void testUpdateDetached() { Session session = getSession(); Experiment experiment = BeanFactory.getExperimentServiceBean().findByID(6); // detach object closing the session removeSession(session); // create new session session = getSession(); Experiment newExperiment = BeanFactory.getExperimentServiceBean().findByID(6); assertFalse(experiment == newExperiment); // Update detached object experiment.setTitle("New Title"); // Let's try to attach object Experiment attachedNewly = BeanFactory.getExperimentServiceBean().updateDetached(experiment); assertEquals("New Title", attachedNewly.getTitle()); removeSession(session); session = getSession(); Experiment updatedExperiment = BeanFactory.getExperimentServiceBean().findByID(6); assertEquals("New Title", updatedExperiment.getTitle()); removeSession(session); BasicTestDatabaseCreatorWrapper.markDatabaseChanged(); } /** * <p> * testFindByCriteria. * </p> */ @Test public void testFindByCriteria() { ExperimentService experimentService = BeanFactory.getExperimentServiceBean(); List<Experiment> foundExperiments = experimentService.findByCriteria("Exp", true); assertEquals(1, foundExperiments.size()); foundExperiments = experimentService.findByCriteria("834", true); assertEquals(1, foundExperiments.size()); foundExperiments = experimentService.findByCriteria("(test", true); assertEquals(0, foundExperiments.size()); // Test case insensitive search foundExperiments = experimentService.findByCriteria("test", false); assertEquals(2, foundExperiments.size()); // Description foundExperiments = experimentService.findByCriteria("genome", false); assertEquals(1, foundExperiments.size()); } }