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());