From ff5b3089b3466afbdc5a4db28815dc06bb29da6f Mon Sep 17 00:00:00 2001 From: jakubs <jakubs> Date: Fri, 7 Nov 2014 16:55:46 +0000 Subject: [PATCH] SSDM-1187 fix the test for unarchiving in openbis. Minor improvement in unarchiving mechanism SVN: 32762 --- .../server/business/bo/DataSetTable.java | 2 +- .../server/business/bo/DataSetTableTest.java | 72 ++++++++++++++++++- 2 files changed, 72 insertions(+), 2 deletions(-) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTable.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTable.java index 8a79d7f7418..9214d3acb64 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTable.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTable.java @@ -914,7 +914,7 @@ public final class DataSetTable extends AbstractDataSetBusinessObject implements dataSetCodes, tryGetLoggedUserId()); result.addAll(enhancedCodes); - if (new HashSet<String>(enhancedCodes).containsAll(dataSetCodes)) + if (false == new HashSet<String>(dataSetCodes).containsAll(enhancedCodes)) { enhancementsFound = true; } diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTableTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTableTest.java index 54bf94d6d48..acfacc42482 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTableTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataSetTableTest.java @@ -699,6 +699,9 @@ public final class DataSetTableTest extends AbstractBOTest { prepareFindFullDatasets(allDataSets, false, true); + preparePrepareForUnarchiving(dataStoreService2, dss2, d2Archived1, d2Archived2, d2NonArchived1, d2NonArchived2, d2NonAvailable3); + preparePrepareForUnarchiving(dataStoreService3, dss3, d3Archived, d3NonArchived); + prepareUpdateDatasetStatuses(new ExternalDataPE[] { d2Archived1, d2Archived2, d3Archived }, UNARCHIVE_PENDING); @@ -708,11 +711,78 @@ public final class DataSetTableTest extends AbstractBOTest }); DataSetTable dataSetTable = createDataSetTable(); - dataSetTable.loadByDataSetCodes(Code.extractCodes(Arrays.asList(allDataSets)), false, true); + dataSetTable.loadByDataSetCodes(Code.extractCodes(allDataSets), false, true); int unarchived = dataSetTable.unarchiveDatasets(); assertEquals(3, unarchived); } + @Test + public void testUnarchiveDataSetsWithEnhancedDataSets() + { + final ExternalDataPE d2Archived1 = createDataSet("d2a1", dss2, ARCHIVED); + final ExternalDataPE d2Archived2 = createDataSet("d2a2", dss2, ARCHIVED); + final ExternalDataPE[] argumentDataSets = + { d2Archived1 }; + final ExternalDataPE[] allDataSets = + { d2Archived1, d2Archived2 }; + + context.checking(new Expectations() + { + { + prepareFindFullDatasets(argumentDataSets, false, true); + + preparePrepareForUnarchivingWithEnhancedDataSets(dataStoreService2, dss2, d2Archived1, d2Archived2); + + prepareFindFullDatasets(allDataSets, false, true); + + prepareUpdateDatasetStatuses(new ExternalDataPE[] + { d2Archived1, d2Archived2 }, UNARCHIVE_PENDING); + + prepareUnarchiving(dataStoreService2, dss2, d2Archived1, d2Archived2); + } + }); + + DataSetTable dataSetTable = createDataSetTable(); + dataSetTable.loadByDataSetCodes(Code.extractCodes(argumentDataSets), false, true); + int unarchived = dataSetTable.unarchiveDatasets(); + assertEquals(2, unarchived); + } + + void preparePrepareForUnarchiving(final IDataStoreService service, final DataStorePE store, final ExternalDataPE... dataSets) + { + context.checking(new Expectations() + { + { + List<String> codes = Code.extractCodes(dataSets); + String userSessionToken = ManagerTestTool.EXAMPLE_SESSION.getSessionToken(); + one(service).getDataSetCodesForUnarchiving(with(equal(store.getSessionToken())), + with(equal(userSessionToken)), + with(equal(codes)), + with(equal(ManagerTestTool.EXAMPLE_PERSON.getUserId()))); + will(returnValue(codes)); + } + }); + } + + /** + * Gets only the first external data, but returns for unarchiving all of them. + */ + void preparePrepareForUnarchivingWithEnhancedDataSets(final IDataStoreService service, final DataStorePE store, final ExternalDataPE... dataSets) + { + context.checking(new Expectations() + { + { + List<String> codes = Code.extractCodes(dataSets); + String userSessionToken = ManagerTestTool.EXAMPLE_SESSION.getSessionToken(); + one(service).getDataSetCodesForUnarchiving(with(equal(store.getSessionToken())), + with(equal(userSessionToken)), + with(equal(Collections.singletonList(codes.get(0)))), + with(equal(ManagerTestTool.EXAMPLE_PERSON.getUserId()))); + will(returnValue(codes)); + } + }); + } + @Test public void testArchiveStatusNotChangedOnLocalFailure() { -- GitLab