From 16516115e87a5d9fa1273871ef4d4cc416f10d27 Mon Sep 17 00:00:00 2001 From: David Randolph Phillips Date: Thu, 15 Feb 2024 10:08:26 -0500 Subject: [PATCH 1/7] [BI-2045] added error for 'Experiment Title already exist' --- .../importer/services/processors/ExperimentProcessor.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/org/breedinginsight/brapps/importer/services/processors/ExperimentProcessor.java b/src/main/java/org/breedinginsight/brapps/importer/services/processors/ExperimentProcessor.java index 525a5e5b5..9f789e172 100644 --- a/src/main/java/org/breedinginsight/brapps/importer/services/processors/ExperimentProcessor.java +++ b/src/main/java/org/breedinginsight/brapps/importer/services/processors/ExperimentProcessor.java @@ -84,6 +84,7 @@ public class ExperimentProcessor implements Processor { private static final String NAME = "Experiment"; private static final String MISSING_OBS_UNIT_ID_ERROR = "Experimental entities are missing ObsUnitIDs"; + private static final String DUPLICATE_EXPERIMENT_TITLE = "Experiment Title already exists"; private static final String MULTIPLE_EXP_TITLES = "File contains more than one Experiment Title"; private static final String MIDNIGHT = "T00:00:00-00:00"; private static final String TIMESTAMP_PREFIX = "TS:"; @@ -1177,6 +1178,9 @@ private PendingImportObject fetchOrCreateTrialPIO(Program program, U PendingImportObject pio; if (trialByNameNoScope.containsKey(importRow.getExpTitle())) { pio = trialByNameNoScope.get(importRow.getExpTitle()); + if (pio.getState() == ImportObjectState.EXISTING && StringUtils.isBlank( importRow.getObsUnitID() ) ){ + throw new UnprocessableEntityException(DUPLICATE_EXPERIMENT_TITLE); + } } else if (!trialByNameNoScope.isEmpty()) { throw new UnprocessableEntityException(MULTIPLE_EXP_TITLES); } else { From ec7419489211d39641fe2b5347f736d4dd633cc1 Mon Sep 17 00:00:00 2001 From: David Randolph Phillips Date: Mon, 19 Feb 2024 12:29:55 -0500 Subject: [PATCH 2/7] [BI-2045] improved variable name --- .../importer/services/processors/ExperimentProcessor.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/breedinginsight/brapps/importer/services/processors/ExperimentProcessor.java b/src/main/java/org/breedinginsight/brapps/importer/services/processors/ExperimentProcessor.java index 9f789e172..847647eec 100644 --- a/src/main/java/org/breedinginsight/brapps/importer/services/processors/ExperimentProcessor.java +++ b/src/main/java/org/breedinginsight/brapps/importer/services/processors/ExperimentProcessor.java @@ -84,7 +84,7 @@ public class ExperimentProcessor implements Processor { private static final String NAME = "Experiment"; private static final String MISSING_OBS_UNIT_ID_ERROR = "Experimental entities are missing ObsUnitIDs"; - private static final String DUPLICATE_EXPERIMENT_TITLE = "Experiment Title already exists"; + private static final String PREEXISTING_EXPERIMENT_TITLE = "Experiment Title already exists"; private static final String MULTIPLE_EXP_TITLES = "File contains more than one Experiment Title"; private static final String MIDNIGHT = "T00:00:00-00:00"; private static final String TIMESTAMP_PREFIX = "TS:"; @@ -1179,7 +1179,7 @@ private PendingImportObject fetchOrCreateTrialPIO(Program program, U if (trialByNameNoScope.containsKey(importRow.getExpTitle())) { pio = trialByNameNoScope.get(importRow.getExpTitle()); if (pio.getState() == ImportObjectState.EXISTING && StringUtils.isBlank( importRow.getObsUnitID() ) ){ - throw new UnprocessableEntityException(DUPLICATE_EXPERIMENT_TITLE); + throw new UnprocessableEntityException(PREEXISTING_EXPERIMENT_TITLE); } } else if (!trialByNameNoScope.isEmpty()) { throw new UnprocessableEntityException(MULTIPLE_EXP_TITLES); From 52a56557861fad481306d5296451bd1b97a10834 Mon Sep 17 00:00:00 2001 From: David Randolph Phillips Date: Thu, 22 Feb 2024 14:10:47 -0500 Subject: [PATCH 3/7] [BI-2045] WIP (improve unit testing) --- .../importer/ExperimentFileImportTest.java | 122 +++++++++++------- 1 file changed, 78 insertions(+), 44 deletions(-) diff --git a/src/test/java/org/breedinginsight/brapps/importer/ExperimentFileImportTest.java b/src/test/java/org/breedinginsight/brapps/importer/ExperimentFileImportTest.java index b3bcb0da1..dab0e1fc9 100644 --- a/src/test/java/org/breedinginsight/brapps/importer/ExperimentFileImportTest.java +++ b/src/test/java/org/breedinginsight/brapps/importer/ExperimentFileImportTest.java @@ -216,7 +216,7 @@ public void importNewExpNewLocNoObsSuccess() { @Test @SneakyThrows - public void importNewExpMultiNewEnvNoObsSuccess() { + public void importNewExpMultiNewEnvError() { Program program = createProgram("New Exp and Multi New Env", "MULENV", "MULENV", BRAPI_REFERENCE_SOURCE, createGermplasm(1), null); Map firstEnv = new HashMap<>(); firstEnv.put(Columns.GERMPLASM_GID, "1"); @@ -282,8 +282,8 @@ public void importNewExpMultiNewEnvNoObsSuccess() { @Test @SneakyThrows - public void importNewEnvExistingExpNoObsSuccess() { - Program program = createProgram("New Env Existing Exp", "NEWENV", "NEWENV", BRAPI_REFERENCE_SOURCE, createGermplasm(1), null); + public void importNewEnvExistingExpErrorMessage() { + Program program = createProgram("New Env Existing Exp", "DUPENV", "DUPENV", BRAPI_REFERENCE_SOURCE, createGermplasm(1), null); Map newExp = new HashMap<>(); newExp.put(Columns.GERMPLASM_GID, "1"); newExp.put(Columns.TEST_CHECK, "T"); @@ -316,19 +316,52 @@ public void importNewEnvExistingExpNoObsSuccess() { newEnv.put(Columns.ROW, "1"); newEnv.put(Columns.COLUMN, "1"); + Flowable> call = importTestUtils.uploadDataFile(importTestUtils.writeExperimentDataToFile(List.of(newEnv), null), null, false, client, program, mappingId); + HttpResponse response = call.blockingFirst(); + assertEquals(HttpStatus.ACCEPTED, response.getStatus()); + + String importId = JsonParser.parseString(response.body()).getAsJsonObject().getAsJsonObject("result").get("importId").getAsString(); + + HttpResponse upload = importTestUtils.getUploadedFile(importId, client, program, mappingId); + JsonObject result = JsonParser.parseString(upload.body()).getAsJsonObject().getAsJsonObject("result"); + assertEquals(422, result.getAsJsonObject("progress").get("statuscode").getAsInt(), "Returned data: " + result); + assertTrue(result.getAsJsonObject("progress").get("message").getAsString().startsWith("Experiment Title already exists")); + } + + @Test + @SneakyThrows + public void importNewEnvNoObsSuccess() { + Program program = createProgram("New Env", "NEWENV", "NEWENV", BRAPI_REFERENCE_SOURCE, createGermplasm(1), null); + + Map newEnv = new HashMap<>(); + newEnv.put(Columns.GERMPLASM_GID, "1"); + newEnv.put(Columns.TEST_CHECK, "T"); + newEnv.put(Columns.EXP_TITLE, "Test Exp"); + newEnv.put(Columns.EXP_UNIT, "Plot"); + newEnv.put(Columns.EXP_TYPE, "Phenotyping"); + newEnv.put(Columns.ENV, "New Trial Existing Exp"); + newEnv.put(Columns.ENV_LOCATION, "Location A"); + newEnv.put(Columns.ENV_YEAR, "2023"); + newEnv.put(Columns.EXP_UNIT_ID, "a-1"); + newEnv.put(Columns.REP_NUM, "1"); + newEnv.put(Columns.BLOCK_NUM, "1"); + newEnv.put(Columns.ROW, "1"); + newEnv.put(Columns.COLUMN, "1"); + JsonObject result = importTestUtils.uploadAndFetch(importTestUtils.writeExperimentDataToFile(List.of(newEnv), null), null, true, client, program, mappingId); JsonArray previewRows = result.get("preview").getAsJsonObject().get("rows").getAsJsonArray(); assertEquals(1, previewRows.size()); JsonObject row = previewRows.get(0).getAsJsonObject(); - assertEquals("EXISTING", row.getAsJsonObject("trial").get("state").getAsString()); - assertEquals("EXISTING", row.getAsJsonObject("location").get("state").getAsString()); + assertEquals("NEW", row.getAsJsonObject("trial").get("state").getAsString()); + assertEquals("NEW", row.getAsJsonObject("location").get("state").getAsString()); assertEquals("NEW", row.getAsJsonObject("study").get("state").getAsString()); assertEquals("NEW", row.getAsJsonObject("observationUnit").get("state").getAsString()); assertRowSaved(newEnv, program, null); } + @ParameterizedTest @ValueSource(booleans = {true, false}) @SneakyThrows @@ -566,45 +599,46 @@ public void verifyFailureImportNewExpWithInvalidObs(boolean commit) { uploadAndVerifyFailure(program, importTestUtils.writeExperimentDataToFile(List.of(newExp), traits), traits.get(0).getObservationVariableName(), commit); } - @ParameterizedTest - @ValueSource(booleans = {true, false}) - @SneakyThrows - public void verifyFailureNewOuExistingEnv(boolean commit) { - Program program = createProgram("New OU Exising Env "+(commit ? "C" : "P"), "FLOU"+(commit ? "C" : "P"), "FLOU"+(commit ? "C" : "P"), BRAPI_REFERENCE_SOURCE, createGermplasm(1), null); - Map newExp = new HashMap<>(); - newExp.put(Columns.GERMPLASM_GID, "1"); - newExp.put(Columns.TEST_CHECK, "T"); - newExp.put(Columns.EXP_TITLE, "Test Exp"); - newExp.put(Columns.EXP_UNIT, "Plot"); - newExp.put(Columns.EXP_TYPE, "Phenotyping"); - newExp.put(Columns.ENV, "New Env"); - newExp.put(Columns.ENV_LOCATION, "Location A"); - newExp.put(Columns.ENV_YEAR, "2023"); - newExp.put(Columns.EXP_UNIT_ID, "a-1"); - newExp.put(Columns.REP_NUM, "1"); - newExp.put(Columns.BLOCK_NUM, "1"); - newExp.put(Columns.ROW, "1"); - newExp.put(Columns.COLUMN, "1"); - - importTestUtils.uploadAndFetch(importTestUtils.writeExperimentDataToFile(List.of(newExp), null), null, true, client, program, mappingId); - - Map newOU = new HashMap<>(newExp); - newOU.put(Columns.EXP_UNIT_ID, "a-2"); - newOU.put(Columns.ROW, "1"); - newOU.put(Columns.COLUMN, "2"); - - Flowable> call = importTestUtils.uploadDataFile(importTestUtils.writeExperimentDataToFile(List.of(newOU), null), null, commit, client, program, mappingId); - HttpResponse response = call.blockingFirst(); - assertEquals(HttpStatus.ACCEPTED, response.getStatus()); - - String importId = JsonParser.parseString(response.body()).getAsJsonObject().getAsJsonObject("result").get("importId").getAsString(); - - HttpResponse upload = importTestUtils.getUploadedFile(importId, client, program, mappingId); - JsonObject result = JsonParser.parseString(upload.body()).getAsJsonObject().getAsJsonObject("result"); - assertEquals(422, result.getAsJsonObject("progress").get("statuscode").getAsInt(), "Returned data: " + result); - - assertTrue(result.getAsJsonObject("progress").get("message").getAsString().startsWith("Experimental entities are missing ObsUnitIDs")); - } + // NO Longer needed, but may be needed in the future. +// @ParameterizedTest +// @ValueSource(booleans = {true, false}) +// @SneakyThrows +// public void verifyFailureNewOuExistingEnv(boolean commit) { +// Program program = createProgram("New OU Exising Env "+(commit ? "C" : "P"), "FLOU"+(commit ? "C" : "P"), "FLOU"+(commit ? "C" : "P"), BRAPI_REFERENCE_SOURCE, createGermplasm(1), null); +// Map newExp = new HashMap<>(); +// newExp.put(Columns.GERMPLASM_GID, "1"); +// newExp.put(Columns.TEST_CHECK, "T"); +// newExp.put(Columns.EXP_TITLE, "Test Exp"); +// newExp.put(Columns.EXP_UNIT, "Plot"); +// newExp.put(Columns.EXP_TYPE, "Phenotyping"); +// newExp.put(Columns.ENV, "New Env"); +// newExp.put(Columns.ENV_LOCATION, "Location A"); +// newExp.put(Columns.ENV_YEAR, "2023"); +// newExp.put(Columns.EXP_UNIT_ID, "a-1"); +// newExp.put(Columns.REP_NUM, "1"); +// newExp.put(Columns.BLOCK_NUM, "1"); +// newExp.put(Columns.ROW, "1"); +// newExp.put(Columns.COLUMN, "1"); +// +// importTestUtils.uploadAndFetch(importTestUtils.writeExperimentDataToFile(List.of(newExp), null), null, true, client, program, mappingId); +// +// Map newOU = new HashMap<>(newExp); +// newOU.put(Columns.EXP_UNIT_ID, "a-2"); +// newOU.put(Columns.ROW, "1"); +// newOU.put(Columns.COLUMN, "2"); +// +// Flowable> call = importTestUtils.uploadDataFile(importTestUtils.writeExperimentDataToFile(List.of(newOU), null), null, commit, client, program, mappingId); +// HttpResponse response = call.blockingFirst(); +// assertEquals(HttpStatus.ACCEPTED, response.getStatus()); +// +// String importId = JsonParser.parseString(response.body()).getAsJsonObject().getAsJsonObject("result").get("importId").getAsString(); +// +// HttpResponse upload = importTestUtils.getUploadedFile(importId, client, program, mappingId); +// JsonObject result = JsonParser.parseString(upload.body()).getAsJsonObject().getAsJsonObject("result"); +// assertEquals(422, result.getAsJsonObject("progress").get("statuscode").getAsInt(), "Returned data: " + result); +// +// assertTrue(result.getAsJsonObject("progress").get("message").getAsString().startsWith("Experimental entities are missing ObsUnitIDs")); +// } @Test @SneakyThrows From d7e3dcd70437d606c1c63a7d24f32580955a28d3 Mon Sep 17 00:00:00 2001 From: David Randolph Phillips Date: Mon, 4 Mar 2024 09:38:33 -0500 Subject: [PATCH 4/7] [BI-2045] Check for existing Env when validating for 'Experiment Title already exist' --- .../services/processors/ExperimentProcessor.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/breedinginsight/brapps/importer/services/processors/ExperimentProcessor.java b/src/main/java/org/breedinginsight/brapps/importer/services/processors/ExperimentProcessor.java index 847647eec..7396ca664 100644 --- a/src/main/java/org/breedinginsight/brapps/importer/services/processors/ExperimentProcessor.java +++ b/src/main/java/org/breedinginsight/brapps/importer/services/processors/ExperimentProcessor.java @@ -1175,10 +1175,12 @@ private void fetchOrCreateLocationPIO(ExperimentObservation importRow) { } private PendingImportObject fetchOrCreateTrialPIO(Program program, User user, boolean commit, ExperimentObservation importRow, Supplier expNextVal) throws UnprocessableEntityException { - PendingImportObject pio; + PendingImportObject trialPio; if (trialByNameNoScope.containsKey(importRow.getExpTitle())) { - pio = trialByNameNoScope.get(importRow.getExpTitle()); - if (pio.getState() == ImportObjectState.EXISTING && StringUtils.isBlank( importRow.getObsUnitID() ) ){ + PendingImportObject envPio; + trialPio = trialByNameNoScope.get(importRow.getExpTitle()); + envPio = this.studyByNameNoScope.get(importRow.getEnv()); + if (trialPio.getState() == ImportObjectState.EXISTING && (StringUtils.isBlank( importRow.getObsUnitID() )) && (envPio!=null && ImportObjectState.EXISTING==envPio.getState() ) ){ throw new UnprocessableEntityException(PREEXISTING_EXPERIMENT_TITLE); } } else if (!trialByNameNoScope.isEmpty()) { @@ -1190,10 +1192,10 @@ private PendingImportObject fetchOrCreateTrialPIO(Program program, U expSeqValue = expNextVal.get().toString(); } BrAPITrial newTrial = importRow.constructBrAPITrial(program, user, commit, BRAPI_REFERENCE_SOURCE, id, expSeqValue); - pio = new PendingImportObject<>(ImportObjectState.NEW, newTrial, id); - this.trialByNameNoScope.put(importRow.getExpTitle(), pio); + trialPio = new PendingImportObject<>(ImportObjectState.NEW, newTrial, id); + this.trialByNameNoScope.put(importRow.getExpTitle(), trialPio); } - return pio; + return trialPio; } private void updateObservationDependencyValues(Program program) { From 1a2ff0927fa1ac6a99a4a24114582bb63da4bcfe Mon Sep 17 00:00:00 2001 From: David Randolph Phillips Date: Mon, 4 Mar 2024 10:55:03 -0500 Subject: [PATCH 5/7] [BI-2045] fixed test --- .../importer/ExperimentFileImportTest.java | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/test/java/org/breedinginsight/brapps/importer/ExperimentFileImportTest.java b/src/test/java/org/breedinginsight/brapps/importer/ExperimentFileImportTest.java index dab0e1fc9..02d8125fd 100644 --- a/src/test/java/org/breedinginsight/brapps/importer/ExperimentFileImportTest.java +++ b/src/test/java/org/breedinginsight/brapps/importer/ExperimentFileImportTest.java @@ -290,7 +290,7 @@ public void importNewEnvExistingExpErrorMessage() { newExp.put(Columns.EXP_TITLE, "Test Exp"); newExp.put(Columns.EXP_UNIT, "Plot"); newExp.put(Columns.EXP_TYPE, "Phenotyping"); - newExp.put(Columns.ENV, "New Env"); + newExp.put(Columns.ENV, "Existing Env"); newExp.put(Columns.ENV_LOCATION, "Location A"); newExp.put(Columns.ENV_YEAR, "2023"); newExp.put(Columns.EXP_UNIT_ID, "a-1"); @@ -301,22 +301,22 @@ public void importNewEnvExistingExpErrorMessage() { JsonObject expResult = importTestUtils.uploadAndFetch(importTestUtils.writeExperimentDataToFile(List.of(newExp), null), null, true, client, program, mappingId); - Map newEnv = new HashMap<>(); - newEnv.put(Columns.GERMPLASM_GID, "1"); - newEnv.put(Columns.TEST_CHECK, "T"); - newEnv.put(Columns.EXP_TITLE, "Test Exp"); - newEnv.put(Columns.EXP_UNIT, "Plot"); - newEnv.put(Columns.EXP_TYPE, "Phenotyping"); - newEnv.put(Columns.ENV, "New Trial Existing Exp"); - newEnv.put(Columns.ENV_LOCATION, "Location A"); - newEnv.put(Columns.ENV_YEAR, "2023"); - newEnv.put(Columns.EXP_UNIT_ID, "a-1"); - newEnv.put(Columns.REP_NUM, "1"); - newEnv.put(Columns.BLOCK_NUM, "1"); - newEnv.put(Columns.ROW, "1"); - newEnv.put(Columns.COLUMN, "1"); - - Flowable> call = importTestUtils.uploadDataFile(importTestUtils.writeExperimentDataToFile(List.of(newEnv), null), null, false, client, program, mappingId); + Map dupExp = new HashMap<>(); + dupExp.put(Columns.GERMPLASM_GID, "1"); + dupExp.put(Columns.TEST_CHECK, "T"); + dupExp.put(Columns.EXP_TITLE, "Test Exp"); + dupExp.put(Columns.EXP_UNIT, "Plot"); + dupExp.put(Columns.EXP_TYPE, "Phenotyping"); + dupExp.put(Columns.ENV, "Existing Env"); + dupExp.put(Columns.ENV_LOCATION, "Location A"); + dupExp.put(Columns.ENV_YEAR, "2023"); + dupExp.put(Columns.EXP_UNIT_ID, "a-1"); + dupExp.put(Columns.REP_NUM, "1"); + dupExp.put(Columns.BLOCK_NUM, "1"); + dupExp.put(Columns.ROW, "1"); + dupExp.put(Columns.COLUMN, "1"); + + Flowable> call = importTestUtils.uploadDataFile(importTestUtils.writeExperimentDataToFile(List.of(dupExp), null), null, false, client, program, mappingId); HttpResponse response = call.blockingFirst(); assertEquals(HttpStatus.ACCEPTED, response.getStatus()); From 1102222714d0506a71a6bbb6f7ea7b508bfefa50 Mon Sep 17 00:00:00 2001 From: David Randolph Phillips Date: Mon, 4 Mar 2024 12:07:21 -0500 Subject: [PATCH 6/7] [BI-2045] fixed test name --- .../brapps/importer/ExperimentFileImportTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/org/breedinginsight/brapps/importer/ExperimentFileImportTest.java b/src/test/java/org/breedinginsight/brapps/importer/ExperimentFileImportTest.java index 02d8125fd..940260cf3 100644 --- a/src/test/java/org/breedinginsight/brapps/importer/ExperimentFileImportTest.java +++ b/src/test/java/org/breedinginsight/brapps/importer/ExperimentFileImportTest.java @@ -282,7 +282,7 @@ public void importNewExpMultiNewEnvError() { @Test @SneakyThrows - public void importNewEnvExistingExpErrorMessage() { + public void importExistingExpAndEnvErrorMessage() { Program program = createProgram("New Env Existing Exp", "DUPENV", "DUPENV", BRAPI_REFERENCE_SOURCE, createGermplasm(1), null); Map newExp = new HashMap<>(); newExp.put(Columns.GERMPLASM_GID, "1"); From 1ae021c73365fee0c9306a11c33dbe546091ab00 Mon Sep 17 00:00:00 2001 From: David Randolph Phillips Date: Mon, 4 Mar 2024 15:31:28 -0500 Subject: [PATCH 7/7] [BI-2046] address PR comments --- .../importer/services/processors/ExperimentProcessor.java | 2 +- .../brapps/importer/ExperimentFileImportTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/breedinginsight/brapps/importer/services/processors/ExperimentProcessor.java b/src/main/java/org/breedinginsight/brapps/importer/services/processors/ExperimentProcessor.java index 7396ca664..2113a0398 100644 --- a/src/main/java/org/breedinginsight/brapps/importer/services/processors/ExperimentProcessor.java +++ b/src/main/java/org/breedinginsight/brapps/importer/services/processors/ExperimentProcessor.java @@ -1180,7 +1180,7 @@ private PendingImportObject fetchOrCreateTrialPIO(Program program, U PendingImportObject envPio; trialPio = trialByNameNoScope.get(importRow.getExpTitle()); envPio = this.studyByNameNoScope.get(importRow.getEnv()); - if (trialPio.getState() == ImportObjectState.EXISTING && (StringUtils.isBlank( importRow.getObsUnitID() )) && (envPio!=null && ImportObjectState.EXISTING==envPio.getState() ) ){ + if (trialPio!=null && ImportObjectState.EXISTING==trialPio.getState() && (StringUtils.isBlank( importRow.getObsUnitID() )) && (envPio!=null && ImportObjectState.EXISTING==envPio.getState() ) ){ throw new UnprocessableEntityException(PREEXISTING_EXPERIMENT_TITLE); } } else if (!trialByNameNoScope.isEmpty()) { diff --git a/src/test/java/org/breedinginsight/brapps/importer/ExperimentFileImportTest.java b/src/test/java/org/breedinginsight/brapps/importer/ExperimentFileImportTest.java index 940260cf3..7a797a815 100644 --- a/src/test/java/org/breedinginsight/brapps/importer/ExperimentFileImportTest.java +++ b/src/test/java/org/breedinginsight/brapps/importer/ExperimentFileImportTest.java @@ -216,7 +216,7 @@ public void importNewExpNewLocNoObsSuccess() { @Test @SneakyThrows - public void importNewExpMultiNewEnvError() { + public void importNewExpMultiNewEnvSuccess() { Program program = createProgram("New Exp and Multi New Env", "MULENV", "MULENV", BRAPI_REFERENCE_SOURCE, createGermplasm(1), null); Map firstEnv = new HashMap<>(); firstEnv.put(Columns.GERMPLASM_GID, "1");