From d4f5f00e065ee879f1d63d6cd6a8fe1163925e2d Mon Sep 17 00:00:00 2001 From: kaloyane <kaloyane> Date: Wed, 13 Jul 2011 09:30:27 +0000 Subject: [PATCH] [LMS-2332] added unit test to verify creation of wells with non-unique materials SVN: 22111 --- .../dss/test/SanofiDropboxJythonTest.java | 103 +++++++++++++++++- 1 file changed, 101 insertions(+), 2 deletions(-) diff --git a/sanofi/sourceTest/java/ch/systemsx/cisd/sanofi/dss/test/SanofiDropboxJythonTest.java b/sanofi/sourceTest/java/ch/systemsx/cisd/sanofi/dss/test/SanofiDropboxJythonTest.java index 90990f83ae0..874f27540ea 100644 --- a/sanofi/sourceTest/java/ch/systemsx/cisd/sanofi/dss/test/SanofiDropboxJythonTest.java +++ b/sanofi/sourceTest/java/ch/systemsx/cisd/sanofi/dss/test/SanofiDropboxJythonTest.java @@ -57,6 +57,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListMaterialCriteria; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialIdentifier; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewMaterial; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.builders.ExperimentBuilder; @@ -393,6 +394,93 @@ public class SanofiDropboxJythonTest extends AbstractJythonDataSetHandlerTest context.assertIsSatisfied(); } + @Test + public void testHappyCaseWithLibraryCreationAndNonUniqueMaterials() throws IOException + { + createDataSetHandler(false, true); + final Sample plate = plateWithLibTemplateAndGeometry("0.75\tH\n54.12\tL", "8_WELLS_2X4"); + + final MockDataSet<Map<String, Object>> queryResult = new MockDataSet<Map<String, Object>>(); + queryResult.add(createQueryResult("A1", "material-1")); + queryResult.add(createQueryResult("B1", "material-1")); + + setDataSetExpectations(); + context.checking(new Expectations() + { + { + one(dataSourceQueryService).select(with(any(String.class)), + with(any(String.class)), with(anything())); + will(returnValue(queryResult)); + + one(openBisService).listMaterials(with(materialCriteria), with(equal(true))); + will(returnValue(Collections.emptyList())); + + exactly(4).of(openBisService).createPermId(); + will(returnValue("well-permId")); + + SampleIdentifier sampleIdentifier = + SampleIdentifierFactory.parse(plate.getIdentifier()); + exactly(4).of(openBisService).tryGetSampleWithExperiment(sampleIdentifier); + will(returnValue(plate)); + + exactly(3).of(openBisService).getPropertiesOfTopSampleRegisteredFor( + sampleIdentifier); + will(returnValue(new IEntityProperty[0])); + + one(openBisService).performEntityOperations(with(atomicatOperationDetails)); + will(returnValue(new AtomicEntityOperationResult())); + + one(mailClient).sendMessage(with(any(String.class)), with(email), + with(aNull(String.class)), with(any(From.class)), + with(equal(EXPERIMENT_RECIPIENTS))); + } + }); + + handler.handle(markerFile); + + assertEquals(MATERIAL_TYPE, materialCriteria.recordedObject().tryGetMaterialType() + .getCode()); + assertEquals(true, queryResult.hasCloseBeenInvoked()); + + List<NewSample> registeredSamples = + atomicatOperationDetails.recordedObject().getSampleRegistrations(); + + assertEquals(4, registeredSamples.size()); + assertAllSamplesHaveContainer(registeredSamples, plate.getIdentifier()); + assertCompoundWell(registeredSamples, "A1", "0.75", "material-1"); + assertPositiveControl(registeredSamples, "A2"); + assertCompoundWell(registeredSamples, "B1", "54.12", "material-1"); + + List<? extends NewExternalData> dataSetsRegistered = + atomicatOperationDetails.recordedObject().getDataSetRegistrations(); + assertEquals(3, dataSetsRegistered.size()); + + NewExternalData imageDataSet = dataSetsRegistered.get(0); + assertEquals(IMAGE_DATA_SET_CODE, imageDataSet.getCode()); + assertEquals(IMAGE_DATA_SET_TYPE, imageDataSet.getDataSetType()); + assertHasProperty(imageDataSet, IMAGE_DATA_SET_BATCH_PROP, "batchNr"); + + NewExternalData overlayDataSet = dataSetsRegistered.get(1); + assertEquals(OVERLAY_DATA_SET_CODE, overlayDataSet.getCode()); + assertEquals(OVERLAY_DATA_SET_TYPE, overlayDataSet.getDataSetType()); + + NewExternalData analysisDataSet = dataSetsRegistered.get(2); + assertEquals(ANALYSIS_DATA_SET_CODE, analysisDataSet.getCode()); + assertEquals(ANALYSIS_DATA_SET_TYPE, analysisDataSet.getDataSetType()); + + Map<String, List<NewMaterial>> materialsRegistered = + atomicatOperationDetails.recordedObject().getMaterialRegistrations(); + assertEquals(1, materialsRegistered.size()); + assertEquals("material-1", materialsRegistered.get(MATERIAL_TYPE).get(0).getCode()); + + AssertionUtil + .assertContains( + "New data from folder 'batchNr_plateCode.variant_2011.07.05' has been successfully registered in plate " + + "<a href='https://bwl27.sanofi-aventis.com:8443/openbis#entity=SAMPLE&sample_type=PLATE&action=SEARCH&code=plateCode'>plateCode</a>", + email.recordedObject()); + context.assertIsSatisfied(); + } + private void assertHasProperty(NewExternalData dataSet, String propCode, String propValue) { for (NewProperty prop : dataSet.getDataSetProperties()) @@ -446,6 +534,13 @@ public class SanofiDropboxJythonTest extends AbstractJythonDataSetHandlerTest private void assertCompoundWell(List<NewSample> newSamples, String wellCode, String concentration) + { + String materialCode = getMaterialCodeByWellCode(wellCode); + assertCompoundWell(newSamples, wellCode, concentration, materialCode); + } + + private void assertCompoundWell(List<NewSample> newSamples, String wellCode, + String concentration, String materialCode) { NewSample newSample = findByWellCode(newSamples, wellCode); assertEquals(COMPOUND_WELL_TYPE, newSample.getSampleType().getCode()); @@ -457,7 +552,6 @@ public class SanofiDropboxJythonTest extends AbstractJythonDataSetHandlerTest assertEquals("Invalid concentration value for well '" + wellCode + "': ", concentration, concentrationProp.tryGetAsString()); - String materialCode = getMaterialCodeByWellCode(wellCode); MaterialIdentifier materialIdentifier = new MaterialIdentifier(materialCode, MATERIAL_TYPE); IEntityProperty wellMaterialProp = @@ -579,10 +673,15 @@ public class SanofiDropboxJythonTest extends AbstractJythonDataSetHandlerTest } private Map<String, Object> createQueryResult(String wellCode) + { + return createQueryResult(wellCode, getMaterialCodeByWellCode(wellCode)); + } + + private Map<String, Object> createQueryResult(String wellCode, String materialCode) { Map<String, Object> result = new HashMap<String, Object>(); result.put("WELL_CODE", wellCode); - result.put("MATERIAL_CODE", getMaterialCodeByWellCode(wellCode)); + result.put("MATERIAL_CODE", materialCode); result.put("ABASE_COMPOUND_ID", wellCode + "_compound_id"); result.put("ABASE_COMPOUND_BATCH_ID", wellCode + "_compound_batch_id"); return result; -- GitLab