// $HeadURL$ // $Id$ // // Copyright © 2010 by the President and Fellows of Harvard College. // // Screensaver is an open-source project developed by the ICCB-L and NSRB labs // at Harvard Medical School. This software is distributed under the terms of // the GNU General Public License. package edu.harvard.med.iccbl.screensaver.service.screens; import org.springframework.beans.factory.annotation.Autowired; import edu.harvard.med.screensaver.db.ScreenDAO; import edu.harvard.med.screensaver.model.screens.ProjectPhase; import edu.harvard.med.screensaver.model.screens.Screen; import edu.harvard.med.screensaver.model.screens.ScreenType; import edu.harvard.med.screensaver.model.screens.StudyType; import edu.harvard.med.screensaver.model.users.LabHead; import edu.harvard.med.screensaver.test.AbstractSpringPersistenceTest; public class IccblScreenFacilityIdInitializerTest extends AbstractSpringPersistenceTest { private IccblScreenFacilityIdInitializer screenFacilityIdInitializer; @Autowired protected ScreenDAO screenDao; @Override protected void setUp() throws Exception { super.setUp(); screenFacilityIdInitializer = new IccblScreenFacilityIdInitializer(genericEntityDao, screenDao); LabHead user = new LabHead("Test", "User", null); Screen primaryScreen = new Screen(null, "1", user, user, ScreenType.RNAI, StudyType.IN_VITRO, ProjectPhase.PRIMARY_SCREEN, "test"); primaryScreen.setProjectId("PID1"); genericEntityDao.persistEntity(primaryScreen); Screen study = new Screen(null, "100000", user, user, ScreenType.RNAI, StudyType.IN_VITRO, ProjectPhase.PRIMARY_SCREEN, "test"); study.setProjectPhase(ProjectPhase.ANNOTATION); genericEntityDao.saveOrUpdateEntity(study); } public void testPrimaryScreen() { Screen primaryScreen = new Screen(null); primaryScreen.setProjectPhase(ProjectPhase.PRIMARY_SCREEN); assertTrue(screenFacilityIdInitializer.initializeFacilityId(primaryScreen)); assertEquals("2", primaryScreen.getFacilityId()); } public void testPrimaryScreenWithAssignedFacilityId() { Screen primaryScreen2 = new Screen(null); primaryScreen2.setProjectPhase(ProjectPhase.PRIMARY_SCREEN); primaryScreen2.setFacilityId("X"); assertFalse(screenFacilityIdInitializer.initializeFacilityId(primaryScreen2)); assertEquals("X", primaryScreen2.getFacilityId()); } public void testRelatedScreen() { LabHead user = new LabHead("Test", "User", null); Screen followUpScreen = new Screen(null, null, user, user, ScreenType.RNAI, StudyType.IN_VITRO, ProjectPhase.PRIMARY_SCREEN, "test"); followUpScreen.setProjectId("PID1"); followUpScreen.setProjectPhase(ProjectPhase.FOLLOW_UP_SCREEN); assertTrue(screenFacilityIdInitializer.initializeFacilityId(followUpScreen)); assertEquals("1-1", followUpScreen.getFacilityId()); genericEntityDao.persistEntity(followUpScreen); followUpScreen = new Screen(null); followUpScreen.setProjectId("PID1"); followUpScreen.setProjectPhase(ProjectPhase.FOLLOW_UP_SCREEN); assertTrue(screenFacilityIdInitializer.initializeFacilityId(followUpScreen)); assertEquals("1-2", followUpScreen.getFacilityId()); } public void testInadmissableAndSuspectPrimaryScreenFacilityIds() { LabHead user = new LabHead("Test", "User2", null); Screen invalidIdPrimaryScreen = new Screen(null, "XX3", user, user, ScreenType.RNAI, StudyType.IN_VITRO, ProjectPhase.PRIMARY_SCREEN, "test2"); genericEntityDao.persistEntity(invalidIdPrimaryScreen); user = new LabHead("Test", "User3", null); Screen suspectIdPrimaryScreen = new Screen(null, "2X", user, user, ScreenType.RNAI, StudyType.IN_VITRO, ProjectPhase.PRIMARY_SCREEN, "test2"); genericEntityDao.persistEntity(suspectIdPrimaryScreen); Screen nextPrimaryScreen = new Screen(null); nextPrimaryScreen.setProjectPhase(ProjectPhase.PRIMARY_SCREEN); assertTrue(screenFacilityIdInitializer.initializeFacilityId(nextPrimaryScreen)); assertEquals("3", nextPrimaryScreen.getFacilityId()); } }