@Test public final void testDeleteWithPropertiesButParentPreserved() { final IExternalDataDAO externalDataDAO = daoFactory.getExternalDataDAO(); final ExternalDataPE deletedData = findExternalData(CHILD_CODE); // Deleted data set should have all collections which prevent it from deletion empty. assertTrue(deletedData.getChildren().isEmpty()); // delete externalDataDAO.delete(deletedData); // test successful deletion of data set assertNull(externalDataDAO.tryGetByTechId(TechId.create(deletedData))); // test successful deletion of data set properties assertFalse(deletedData.getProperties().isEmpty()); List<EntityTypePropertyTypePE> retrievedPropertyTypes = daoFactory .getEntityPropertyTypeDAO(EntityKind.DATA_SET) .listEntityPropertyTypes(deletedData.getEntityType()); for (DataSetPropertyPE property : deletedData.getProperties()) { int index = retrievedPropertyTypes.indexOf(property.getEntityTypePropertyType()); EntityTypePropertyTypePE retrievedPropertyType = retrievedPropertyTypes.get(index); assertFalse(retrievedPropertyType.getPropertyValues().contains(property)); } // deleted sample had parent connected that should not have been deleted // NOTE: somehow cannot get parents even though connection is the same as with children // DataPE parent = deletedData.tryGetParent(); // assertNotNull(parent); // assertNotNull(externalDataDAO.tryGetByTechId(new TechId(HibernateUtils.getId(parent)))); findExternalData(PARENT_CODE); }
@Test(expectedExceptions = DataIntegrityViolationException.class) public final void testDeleteFailWithChildrenDatasets() { final IExternalDataDAO externalDataDAO = daoFactory.getExternalDataDAO(); final ExternalDataPE deletedData = findExternalData(PARENT_CODE); // Deleted data set should have 'child' data sets which prevent it from deletion. assertFalse(deletedData.getChildren().isEmpty()); // delete externalDataDAO.delete(deletedData); }