Author: bleny Date: 2011-04-19 10:15:46 +0000 (Tue, 19 Apr 2011) New Revision: 1216 Log: refactor obsdeb test to move fixtures out Added: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebFixtures.java Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebTest.java Added: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebFixtures.java =================================================================== --- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebFixtures.java (rev 0) +++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebFixtures.java 2011-04-19 10:15:46 UTC (rev 1216) @@ -0,0 +1,118 @@ +package fr.ifremer.wao.service; + +import fr.ifremer.wao.TestManager; +import fr.ifremer.wao.WaoBusinessException; +import fr.ifremer.wao.bean.ConnectedUser; +import fr.ifremer.wao.bean.ObsProgram; +import fr.ifremer.wao.bean.UserRole; +import fr.ifremer.wao.entity.Boat; +import fr.ifremer.wao.entity.Company; +import fr.ifremer.wao.entity.CompanyImpl; +import fr.ifremer.wao.entity.UserProfile; +import fr.ifremer.wao.entity.UserProfileImpl; +import fr.ifremer.wao.entity.WaoUser; +import fr.ifremer.wao.entity.WaoUserImpl; + +import java.io.InputStream; + +public class ObsDebFixtures { + + protected TestManager manager; + + protected WaoUser josh; + protected Company codeLutin; + protected Company ifremer; + protected Boat moise; + + protected static final String CSV_CONTENT = + "PLAN_CODE;SOCIETE;REGION_IFREMER_COD;OBSERVATEUR_COD;OBSERVATION_DATE;UNITE_OBSERVATION_COD;OBSERVATEURS\n" + + "2011_888;Ifremer;GA;OBS1;05/01/2010;UO007;\n" + + "2011_889;Code Lutin;MA;OBS2;25/02/2010;UO087;\n" + + "2011_890;Code Lutin;GA;OBS1;13/02/2010;UO007;\n" + + "2011_891;Code Lutin;MA;OBS2;13/02/2010;UO087;"; + protected static final String CSV_WITH_OBSERVERS_CONTENT = + "PLAN_CODE;REGION_IFREMER_COD;OBSERVATEUR_COD;OBSERVATION_DATE;UNITE_OBSERVATION_COD;OBSERVATEURS\n" + + "2011_890;GA;OBS1;13/02/2010;UO007;josh"; + + public ObsDebFixtures(TestManager manager) { + this.manager = manager; + } + + public Company codeLutin() { + if (codeLutin == null) { + codeLutin = new CompanyImpl(); + codeLutin.setName("Code Lutin"); + codeLutin.setActive(true); + manager.getServiceUser().createUpdateCompany(codeLutin); + } + return codeLutin; + } + + public Company ifremer() { + if (ifremer == null) { + ifremer = new CompanyImpl(); + ifremer.setName("Ifremer"); + ifremer.setActive(true); + manager.getServiceUser().createUpdateCompany(ifremer); + } + return ifremer; + } + + public Boat moise() { + if (moise == null) { + ServiceBoat serviceBoat = manager.getServiceBoat(); + InputStream input = getClass().getResourceAsStream("/import/navires.csv"); + try { + serviceBoat.importBoatCsv(input); + moise = serviceBoat.getBoat(273129); + } catch (WaoBusinessException e) { + throw new RuntimeException(e); + } + } + return moise; + } + + public WaoUser josh() throws WaoBusinessException { + if (josh == null) { + josh = new WaoUserImpl(); + josh.setLogin("josh"); + josh.setFirstName("Joshua"); + josh.setLastName("B."); + josh.setPassword(manager.getContext().encodeString("mdp")); + josh.setActive(true); + josh.setCompany(codeLutin()); + manager.getServiceUser().createUpdateUser(josh, false); + josh.setPassword("mdp"); + } + return josh; + } + + public ConnectedUser joshAsAdministrator() throws WaoBusinessException { + UserProfile userProfile = new UserProfileImpl(ObsProgram.OBSDEB, UserRole.ADMIN, true); + ConnectedUser connectedUser = manager.getServiceUser().connect(josh().getLogin(), josh().getPassword()); + connectedUser.setProfile(userProfile); + return connectedUser; + } + + public ConnectedUser joshAsCoordinator() throws WaoBusinessException { + UserProfile userProfile = new UserProfileImpl(ObsProgram.OBSDEB, UserRole.COORDINATOR, true); + ConnectedUser connectedUser = manager.getServiceUser().connect(josh().getLogin(), josh().getPassword()); + connectedUser.setProfile(userProfile); + return connectedUser; + } + + public ConnectedUser joshAsObserver() throws WaoBusinessException { + UserProfile userProfile = new UserProfileImpl(ObsProgram.OBSDEB, UserRole.OBSERVER, true); + ConnectedUser connectedUser = manager.getServiceUser().connect(josh().getLogin(), josh().getPassword()); + connectedUser.setProfile(userProfile); + return connectedUser; + } + + public String initialSamplingPlanCSV() { + return CSV_CONTENT; + } + + public String samplingPlanCSVWithObservers() { + return CSV_WITH_OBSERVERS_CONTENT; + } +} \ No newline at end of file Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebTest.java =================================================================== --- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebTest.java 2011-04-19 09:34:34 UTC (rev 1215) +++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebTest.java 2011-04-19 10:15:46 UTC (rev 1216) @@ -25,27 +25,19 @@ import fr.ifremer.wao.AbstractServiceTest; import fr.ifremer.wao.WaoBusinessException; -import fr.ifremer.wao.bean.ConnectedUser; -import fr.ifremer.wao.bean.ObsProgram; import fr.ifremer.wao.bean.SamplingFilter; import fr.ifremer.wao.bean.SamplingFilterValues; -import fr.ifremer.wao.bean.UserRole; import fr.ifremer.wao.bean.ValidationResult; import fr.ifremer.wao.entity.Boat; -import fr.ifremer.wao.entity.Company; -import fr.ifremer.wao.entity.CompanyImpl; import fr.ifremer.wao.entity.Contact; import fr.ifremer.wao.entity.SampleRow; import fr.ifremer.wao.entity.TerrestrialDivision; import fr.ifremer.wao.entity.TerrestrialLocation; -import fr.ifremer.wao.entity.UserProfile; -import fr.ifremer.wao.entity.UserProfileImpl; -import fr.ifremer.wao.entity.WaoUser; -import fr.ifremer.wao.entity.WaoUserImpl; import fr.ifremer.wao.io.ImportResults; import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringUtils; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; import org.nuiton.util.DateUtil; import org.nuiton.util.PeriodDates; @@ -57,113 +49,41 @@ import java.util.List; /** + * + * * @author bleny */ public class ObsDebTest extends AbstractServiceTest { private static final Logger log = LoggerFactory.getLogger(ObsDebTest.class); - protected WaoUser josh; - - protected Company codeLutin; - - protected Company ifremer; - protected ServiceUser serviceUser; + protected ServiceReferential serviceReferential; + protected ServiceBoat serviceBoat; + protected ServiceSampling serviceSampling; + protected ServiceContact serviceContact; - protected Boat moise; + protected ObsDebFixtures fixtures; - protected static final String CSV_CONTENT = - "PLAN_CODE;SOCIETE;REGION_IFREMER_COD;OBSERVATEUR_COD;OBSERVATION_DATE;UNITE_OBSERVATION_COD;OBSERVATEURS\n" - + "2011_888;Ifremer;GA;OBS1;05/01/2010;UO007;\n" - + "2011_889;Code Lutin;MA;OBS2;25/02/2010;UO087;\n" - + "2011_890;Code Lutin;GA;OBS1;13/02/2010;UO007;\n" - + "2011_891;Code Lutin;MA;OBS2;13/02/2010;UO087;"; - - protected static final String CSV_WITH_OBSERVERS_CONTENT = - "PLAN_CODE;REGION_IFREMER_COD;OBSERVATEUR_COD;OBSERVATION_DATE;UNITE_OBSERVATION_COD;OBSERVATEURS\n" - + "2011_890;GA;OBS1;13/02/2010;UO007;josh"; - - protected Company codeLutin() { - if (codeLutin == null) { - codeLutin = new CompanyImpl(); - codeLutin.setName("Code Lutin"); - codeLutin.setActive(true); - serviceUser = manager.getServiceUser(); - serviceUser.createUpdateCompany(codeLutin); - } - return codeLutin; + @Before + public void initServices() { + serviceUser = manager.getServiceUser(); + serviceReferential = manager.getServiceReferential(); + serviceBoat = manager.getServiceBoat(); + serviceSampling = manager.getServiceSampling(); + serviceContact = manager.getServiceContact(); } - protected Company ifremer() { - if (ifremer == null) { - ifremer = new CompanyImpl(); - ifremer.setName("Ifremer"); - ifremer.setActive(true); - serviceUser = manager.getServiceUser(); - serviceUser.createUpdateCompany(ifremer); - } - return ifremer; + @Before + public void initFixtures() { + fixtures = new ObsDebFixtures(manager); } - protected Boat moise() { - if (moise == null) { - ServiceBoat serviceBoat = manager.getServiceBoat(); - InputStream input = getClass().getResourceAsStream("/import/navires.csv"); - try { - serviceBoat.importBoatCsv(input); - moise = serviceBoat.getBoat(273129); - } catch (WaoBusinessException e) { - throw new RuntimeException(e); - } - } - return moise; - } - - protected WaoUser josh() throws WaoBusinessException { - if (josh == null) { - josh = new WaoUserImpl(); - josh.setLogin("josh"); - josh.setFirstName("Joshua"); - josh.setLastName("B."); - josh.setPassword(manager.getContext().encodeString("mdp")); - josh.setActive(true); - josh.setCompany(codeLutin()); - serviceUser = manager.getServiceUser(); - serviceUser.createUpdateUser(josh, false); - josh.setPassword("mdp"); - } - return josh; - } - - protected ConnectedUser joshAsAdministrator() throws WaoBusinessException { - UserProfile userProfile = new UserProfileImpl(ObsProgram.OBSDEB, UserRole.ADMIN, true); - ConnectedUser connectedUser = serviceUser.connect(josh().getLogin(), josh().getPassword()); - connectedUser.setProfile(userProfile); - return connectedUser; - } - - protected ConnectedUser joshAsCoordinator() throws WaoBusinessException { - UserProfile userProfile = new UserProfileImpl(ObsProgram.OBSDEB, UserRole.COORDINATOR, true); - ConnectedUser connectedUser = serviceUser.connect(josh().getLogin(), josh().getPassword()); - connectedUser.setProfile(userProfile); - return connectedUser; - } - - protected ConnectedUser joshAsObserver() throws WaoBusinessException { - UserProfile userProfile = new UserProfileImpl(ObsProgram.OBSDEB, UserRole.OBSERVER, true); - ConnectedUser connectedUser = serviceUser.connect(josh().getLogin(), josh().getPassword()); - connectedUser.setProfile(userProfile); - return connectedUser; - } - /** * As an admin, i must be able to import terrestrial divisions */ @Test public void adminCanImportTerrestrialDivisions() { - ServiceReferential serviceReferential = manager.getServiceReferential(); - // as an admin, i can import terrestrial divisions, i should not // raise any exception InputStream input = getClass().getResourceAsStream("/import/purifiedTerrestrialDivisions.csv"); @@ -185,14 +105,14 @@ // First create add two companies in Wao manager.setCurrentDate(DateUtil.createDate(2, 1, 2010)); - ifremer(); - codeLutin(); + fixtures.ifremer(); + fixtures.codeLutin(); // Then, import the sampling plan manager.setCurrentDate(DateUtil.createDate(3, 1, 2010)); - InputStream input = IOUtils.toInputStream(CSV_CONTENT); - ImportResults importResults = manager.getServiceSampling().importSamplingPlanCsv(input, joshAsAdministrator()); + InputStream input = IOUtils.toInputStream(fixtures.initialSamplingPlanCSV()); + ImportResults importResults = manager.getServiceSampling().importSamplingPlanCsv(input, fixtures.joshAsAdministrator()); Assert.assertEquals(4, importResults.getNbRowsImported()); Assert.assertEquals(0, importResults.getNbRowsRefused()); } @@ -208,7 +128,6 @@ adminCanImportSamplingPlan(); // as an administrator, i can get the sampling plan - ServiceSampling serviceSampling = manager.getServiceSampling(); // Since a new filter may be initialized for a period of time, // we set the current date to be deterministic, at this date @@ -216,7 +135,7 @@ // non filtered manager.setCurrentDate(DateUtil.createDate(25, 1, 2010)); - SamplingFilter samplingFilter = serviceSampling.newSamplingFilter(joshAsAdministrator()); + SamplingFilter samplingFilter = serviceSampling.newSamplingFilter(fixtures.joshAsAdministrator()); if (log.isDebugEnabled()) { log.debug("a new empty sampling filter is " + samplingFilter.toString()); @@ -248,10 +167,8 @@ // given a sampling plan adminCanImportSamplingPlan(); - ServiceSampling serviceSampling = manager.getServiceSampling(); - // i can filter the sampling plan by getting a filter - SamplingFilter samplingFilter = serviceSampling.newSamplingFilter(joshAsAdministrator()); + SamplingFilter samplingFilter = serviceSampling.newSamplingFilter(fixtures.joshAsAdministrator()); // and the possible values i can use to fill the filter SamplingFilterValues samplingFilterValues = serviceSampling.getPossibleValuesForFilter(samplingFilter); @@ -265,7 +182,7 @@ Assert.assertEquals(2, samplingFilterValues.getObservationUnits().size()); Assert.assertEquals(0, samplingFilterValues.getObservers().size()); - samplingFilter = serviceSampling.newSamplingFilter(joshAsAdministrator()); + samplingFilter = serviceSampling.newSamplingFilter(fixtures.joshAsAdministrator()); samplingFilter.setPeriod(new PeriodDates(DateUtil.createDate(20, 2, 2010), DateUtil.createDate(27, 2, 2010))); @@ -290,11 +207,9 @@ adminCanImportSamplingPlan(); // as a coordinator, i can get the sampling plan - ServiceSampling serviceSampling = manager.getServiceSampling(); - manager.setCurrentDate(DateUtil.createDate(25, 1, 2010)); - SamplingFilter samplingFilter = serviceSampling.newSamplingFilter(joshAsCoordinator()); + SamplingFilter samplingFilter = serviceSampling.newSamplingFilter(fixtures.joshAsCoordinator()); if (log.isDebugEnabled()) { log.debug("a new empty sampling filter for coordinator is " + samplingFilter.toString()); @@ -315,24 +230,22 @@ // given a sampling plan adminCanImportSamplingPlan(); - ServiceSampling serviceSampling = manager.getServiceSampling(); - // as a coordinator, i can export the sampling plan - SamplingFilter samplingFilter = serviceSampling.newSamplingFilter(joshAsCoordinator()); - InputStream input = serviceSampling.exportSamplingPlanCsv(joshAsCoordinator(), samplingFilter); + SamplingFilter samplingFilter = serviceSampling.newSamplingFilter(fixtures.joshAsCoordinator()); + InputStream input = serviceSampling.exportSamplingPlanCsv(fixtures.joshAsCoordinator(), samplingFilter); String csv = IOUtils.toString(input); if (log.isDebugEnabled()) { log.debug("CSV file as it was exported:\n" + csv); - log.debug("CSV file as it will be imported (with observers):\n" + CSV_WITH_OBSERVERS_CONTENT); + log.debug("CSV file as it will be imported (with observers):\n" + fixtures.samplingPlanCSVWithObservers()); } // i can add a column to add observers to each line - serviceSampling.importSamplingPlanCsv(IOUtils.toInputStream(CSV_WITH_OBSERVERS_CONTENT), joshAsCoordinator()); + serviceSampling.importSamplingPlanCsv(IOUtils.toInputStream(fixtures.samplingPlanCSVWithObservers()), fixtures.joshAsCoordinator()); // now getting the sampling plan and checking that observers are linked to sample rows - SampleRow row2011_890 = serviceSampling.getSampleRowByCode(joshAsCoordinator(), "2011_890"); + SampleRow row2011_890 = serviceSampling.getSampleRowByCode(fixtures.joshAsCoordinator(), "2011_890"); Assert.assertNotNull(row2011_890); Assert.assertEquals(1, row2011_890.sizeObservers()); @@ -346,7 +259,7 @@ log.debug("log entry after update on observers is: '" + logEntry + "'"); } - Assert.assertTrue("added observer is mentioned in the log", logEntry.contains(josh().getFullName())); + Assert.assertTrue("added observer is mentioned in the log", logEntry.contains(fixtures.josh().getFullName())); } /** @@ -359,12 +272,10 @@ public void coordinatorCannotBreakSamplingPlan() throws IOException, WaoBusinessException { coordinatorCanAddObserversViaImport(); - ServiceSampling serviceSampling = manager.getServiceSampling(); - // josh cannot be affected to this row, because on the same day // he is to be elsewhere - SampleRow row2011_891 = serviceSampling.getSampleRowByCode(joshAsCoordinator(), "2011_891"); - row2011_891.addObservers(josh()); + SampleRow row2011_891 = serviceSampling.getSampleRowByCode(fixtures.joshAsCoordinator(), "2011_891"); + row2011_891.addObservers(fixtures.josh()); ValidationResult validationResult = serviceSampling.validateSampleRow(row2011_891); @@ -383,11 +294,9 @@ coordinatorCanAddObserversViaImport(); // as an observer, i can get the sampling plan - ServiceSampling serviceSampling = manager.getServiceSampling(); - manager.setCurrentDate(DateUtil.createDate(10, 2, 2010)); - SamplingFilter samplingFilter = serviceSampling.newSamplingFilter(joshAsObserver()); + SamplingFilter samplingFilter = serviceSampling.newSamplingFilter(fixtures.joshAsObserver()); if (log.isDebugEnabled()) { log.debug("a new empty sampling filter for observer is " + samplingFilter.toString()); @@ -405,10 +314,8 @@ coordinatorCanAddObserversViaImport(); manager.setCurrentDate(DateUtil.createDate(10, 2, 2010)); - ServiceSampling serviceSampling = manager.getServiceSampling(); + InputStream in = serviceSampling.exportSamplingPlanICalendar(fixtures.joshAsObserver()); - InputStream in = serviceSampling.exportSamplingPlanICalendar(joshAsObserver()); - String result = IOUtils.toString(in); if (log.isDebugEnabled()) { log.debug("exported iCal for observer is " + result); @@ -425,21 +332,16 @@ public void observerCanCreateContact() throws IOException, WaoBusinessException { observerCanReadSamplingPlan(); - ServiceSampling serviceSampling = manager.getServiceSampling(); - ServiceContact serviceContact = manager.getServiceContact(); - ServiceBoat serviceBoat = manager.getServiceBoat(); - ServiceReferential serviceReferential = manager.getServiceReferential(); - // we are one day after the observation manager.setCurrentDate(DateUtil.createDate(15, 2, 2010)); // the user is supposed to create a contact to tell what he // has done this day - SampleRow row = serviceSampling.getSampleRowByCode(joshAsObserver(), "2011_890"); - Boat boat = serviceBoat.getBoat(moise().getImmatriculation()); + SampleRow row = serviceSampling.getSampleRowByCode(fixtures.joshAsObserver(), "2011_890"); + Boat boat = serviceBoat.getBoat(fixtures.moise().getImmatriculation()); // let's create the contact - Contact contact = serviceContact.getNewContact(joshAsObserver(), row, boat); + Contact contact = serviceContact.getNewContact(fixtures.joshAsObserver(), row, boat); // in the observation report, i must tell where i was and when List<TerrestrialLocation> ports = serviceReferential.getAllPorts(contact.getSampleRow().getObservationUnit()); @@ -464,7 +366,7 @@ Assert.assertTrue("validation must succeed", validationResult.isSuccess()); - serviceContact.saveContact(joshAsObserver(), contact, false); + serviceContact.saveContact(fixtures.joshAsObserver(), contact, false); contact = serviceContact.getContact(contact.getTopiaId()); Assert.assertNotNull("service must have save the data given by observer", contact.getTerrestrialLocation());