From 7675ae18976dbfeee499fee79037a12eb84a85e0 Mon Sep 17 00:00:00 2001 From: uhensler <urs.hensler@frentix.com> Date: Wed, 10 Jul 2019 14:56:45 +0200 Subject: [PATCH] OO-4142: Change weight of a used question except if it used in manual scouring course element --- .../course/nodes/ms/MSConfigController.java | 3 +- .../org/olat/course/nodes/ms/MSService.java | 7 +- .../nodes/ms/manager/MSServiceImpl.java | 24 +++-- .../modules/forms/EvaluationFormManager.java | 2 + .../forms/handler/AllHandlerPageProvider.java | 2 +- .../forms/handler/EvaluationFormHandler.java | 5 +- .../modules/forms/handler/RubricHandler.java | 6 +- .../manager/EvaluationFormManagerImpl.java | 7 ++ .../manager/EvaluationFormSurveyDAO.java | 20 ++++ .../ui/EvaluationFormEditorController.java | 7 +- .../forms/ui/RubricEditorController.java | 7 +- .../org/olat/upgrade/OLATUpgrade_14_1_0.java | 102 ++++++++++++++++++ .../olat/upgrade/_spring/upgradeContext.xml | 1 + .../manager/EvaluationFormSurveyDAOTest.java | 18 ++++ 14 files changed, 190 insertions(+), 21 deletions(-) create mode 100644 src/main/java/org/olat/upgrade/OLATUpgrade_14_1_0.java diff --git a/src/main/java/org/olat/course/nodes/ms/MSConfigController.java b/src/main/java/org/olat/course/nodes/ms/MSConfigController.java index 1778ce1cb04..3f183935426 100644 --- a/src/main/java/org/olat/course/nodes/ms/MSConfigController.java +++ b/src/main/java/org/olat/course/nodes/ms/MSConfigController.java @@ -46,7 +46,6 @@ import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController; -import org.olat.core.id.OLATResourceable; import org.olat.core.util.StringHelper; import org.olat.course.ICourse; import org.olat.course.nodes.MSCourseNode; @@ -97,7 +96,7 @@ public class MSConfigController extends FormBasicController { private LayoutMain3ColsPreviewController previewCtr; private final ModuleConfiguration config; - private final OLATResourceable ores; + private final RepositoryEntry ores; private final String nodeIdent; private RepositoryEntry formEntry; private MinMax formMinMax; diff --git a/src/main/java/org/olat/course/nodes/ms/MSService.java b/src/main/java/org/olat/course/nodes/ms/MSService.java index 9a4e8320972..4990ab5d565 100644 --- a/src/main/java/org/olat/course/nodes/ms/MSService.java +++ b/src/main/java/org/olat/course/nodes/ms/MSService.java @@ -24,7 +24,6 @@ import java.util.Map; import java.util.function.Function; import org.olat.core.id.Identity; -import org.olat.core.id.OLATResourceable; import org.olat.modules.forms.EvaluationFormSession; import org.olat.modules.forms.EvaluationFormSessionRef; import org.olat.modules.forms.EvaluationFormSessionStatus; @@ -41,6 +40,8 @@ import org.olat.repository.RepositoryEntry; */ public interface MSService { + String SURVEY_ORES_TYPE_NAME = "course-ms"; + EvaluationFormSession getOrCreateSession(RepositoryEntry formEntry, RepositoryEntry ores, String nodeIdent, Identity assessedIdentity, AuditEnv auditEnv); @@ -53,9 +54,9 @@ public interface MSService { EvaluationFormSession reopenSession(EvaluationFormSession session, AuditEnv auditEnv); - boolean hasSessions(OLATResourceable ores, String nodeIdent); + boolean hasSessions(RepositoryEntry ores, String nodeIdent); - List<EvaluationFormSession> getSessions(OLATResourceable ores, String nodeIdent); + List<EvaluationFormSession> getSessions(RepositoryEntry ores, String nodeIdent); void deleteSession(RepositoryEntry ores, String nodeIdent, Identity assessedIdentity, AuditEnv auditEnv); diff --git a/src/main/java/org/olat/course/nodes/ms/manager/MSServiceImpl.java b/src/main/java/org/olat/course/nodes/ms/manager/MSServiceImpl.java index c123ccc591c..57afd01b8eb 100644 --- a/src/main/java/org/olat/course/nodes/ms/manager/MSServiceImpl.java +++ b/src/main/java/org/olat/course/nodes/ms/manager/MSServiceImpl.java @@ -32,6 +32,7 @@ import java.util.stream.Collectors; import org.olat.core.id.Identity; import org.olat.core.id.OLATResourceable; +import org.olat.core.util.resource.OresHelper; import org.olat.course.auditing.UserNodeAuditManager; import org.olat.course.nodes.ms.AuditEnv; import org.olat.course.nodes.ms.MSService; @@ -88,7 +89,16 @@ public class MSServiceImpl implements MSService { private EvaluationFormSurveyIdentifier getSurveyIdentitfier(RepositoryEntry ores, String nodeIdent, Identity assessedIdentity) { - return of(ores, nodeIdent, assessedIdentity.getKey().toString()); + OLATResourceable msOres = getMsOlatResourceable(ores); + return of(msOres, nodeIdent, assessedIdentity.getKey().toString()); + } + + private EvaluationFormSurveyIdentifier getSurveysIdentifier(RepositoryEntry ores, String nodeIdent) { + return of(getMsOlatResourceable(ores), nodeIdent); + } + + private OLATResourceable getMsOlatResourceable(RepositoryEntry ores) { + return OresHelper.createOLATResourceableInstance(SURVEY_ORES_TYPE_NAME, ores.getKey()); } private EvaluationFormSurvey loadOrCreateSurvey(RepositoryEntry formEntry, EvaluationFormSurveyIdentifier surveyIdent) { @@ -147,13 +157,13 @@ public class MSServiceImpl implements MSService { } @Override - public boolean hasSessions(OLATResourceable ores, String nodeIdent) { - return !evaluationFormManager.loadSurveys(of(ores, nodeIdent)).isEmpty(); + public boolean hasSessions(RepositoryEntry ores, String nodeIdent) { + return !evaluationFormManager.loadSurveys(getSurveysIdentifier(ores, nodeIdent)).isEmpty(); } @Override - public List<EvaluationFormSession> getSessions(OLATResourceable ores, String nodeIdent) { - SessionFilter filter = SessionFilterFactory.create(of(ores, nodeIdent)); + public List<EvaluationFormSession> getSessions(RepositoryEntry ores, String nodeIdent) { + SessionFilter filter = SessionFilterFactory.create(getSurveysIdentifier(ores, nodeIdent)); return evaluationFormManager.loadSessionsFiltered(filter, 0, -1); } @@ -167,7 +177,7 @@ public class MSServiceImpl implements MSService { @Override public void deleteSessions(RepositoryEntry ores, String nodeIdent) { - List<EvaluationFormSurvey> surveys = evaluationFormManager.loadSurveys(of(ores, nodeIdent)); + List<EvaluationFormSurvey> surveys = evaluationFormManager.loadSurveys(getSurveysIdentifier(ores, nodeIdent)); for (EvaluationFormSurvey survey : surveys) { evaluationFormManager.deleteSurvey(survey); } @@ -205,7 +215,7 @@ public class MSServiceImpl implements MSService { .flatMap(r -> r.getSliders().stream()) .map(Slider::getId) .collect(Collectors.toList()); - SessionFilter filter = SessionFilterFactory.create(of(ores, nodeIdent)); + SessionFilter filter = SessionFilterFactory.create(getSurveysIdentifier(ores, nodeIdent)); List<EvaluationFormResponse> responses = evaluationFormManager.getResponses(responseIdentifiers, filter , Limit.all()); Map<EvaluationFormSession, List<EvaluationFormResponse>> sessionToResponses = responses.stream() .collect(Collectors.groupingBy(EvaluationFormResponse::getSession)); diff --git a/src/main/java/org/olat/modules/forms/EvaluationFormManager.java b/src/main/java/org/olat/modules/forms/EvaluationFormManager.java index 815a83ce53b..32bb2666882 100644 --- a/src/main/java/org/olat/modules/forms/EvaluationFormManager.java +++ b/src/main/java/org/olat/modules/forms/EvaluationFormManager.java @@ -212,6 +212,8 @@ public interface EvaluationFormManager { * @return */ public boolean isEvaluationFormActivelyUsed(RepositoryEntryRef formEntry); + + public boolean isEvaluationFormWeightActivelyUsed(RepositoryEntryRef formEntry); public EvaluationFormStatistic getSessionsStatistic(SessionFilter filter); diff --git a/src/main/java/org/olat/modules/forms/handler/AllHandlerPageProvider.java b/src/main/java/org/olat/modules/forms/handler/AllHandlerPageProvider.java index 21ed46f8a85..453b7d730a3 100644 --- a/src/main/java/org/olat/modules/forms/handler/AllHandlerPageProvider.java +++ b/src/main/java/org/olat/modules/forms/handler/AllHandlerPageProvider.java @@ -47,7 +47,7 @@ public class AllHandlerPageProvider implements PageProvider { handlers.add(new HTMLParagraphHandler()); handlers.add(new ImageHandler(storage)); handlers.add(new TableHandler()); - handlers.add(new RubricHandler(false)); + handlers.add(new RubricHandler(false, false)); handlers.add(new TextInputHandler(false)); handlers.add(new FileUploadHandler(false)); handlers.add(new SingleChoiceHandler(false)); diff --git a/src/main/java/org/olat/modules/forms/handler/EvaluationFormHandler.java b/src/main/java/org/olat/modules/forms/handler/EvaluationFormHandler.java index 582f6e4f263..3dcc60ff3e9 100644 --- a/src/main/java/org/olat/modules/forms/handler/EvaluationFormHandler.java +++ b/src/main/java/org/olat/modules/forms/handler/EvaluationFormHandler.java @@ -34,6 +34,7 @@ import java.nio.file.attribute.BasicFileAttributes; import java.util.Locale; import java.util.Map; +import org.apache.logging.log4j.Logger; import org.olat.core.CoreSpringFactory; import org.olat.core.commons.persistence.DB; import org.olat.core.gui.UserRequest; @@ -50,7 +51,6 @@ import org.olat.core.id.OLATResourceable; import org.olat.core.id.Organisation; import org.olat.core.id.Roles; import org.olat.core.logging.AssertException; -import org.apache.logging.log4j.Logger; import org.olat.core.logging.Tracing; import org.olat.core.util.FileUtils; import org.olat.core.util.PathUtils; @@ -283,12 +283,13 @@ public class EvaluationFormHandler implements RepositoryHandler { //if in use -> edition is restricted boolean restrictedEdit = evaluationFormManager.isEvaluationFormActivelyUsed(re); + boolean restrictedEditWeight = evaluationFormManager.isEvaluationFormWeightActivelyUsed(re); if(restrictedEdit) { Translator translator = Util.createPackageTranslator(EvaluationFormRuntimeController.class, ureq.getLocale()); toolbar.setMessage(translator.translate("evaluation.form.in.use")); toolbar.setMessageCssClass("o_warning"); } - return new EvaluationFormEditorController(ureq, control, formFile, storage, restrictedEdit); + return new EvaluationFormEditorController(ureq, control, formFile, storage, restrictedEdit, restrictedEditWeight); } public File getFormFile(RepositoryEntry re) { diff --git a/src/main/java/org/olat/modules/forms/handler/RubricHandler.java b/src/main/java/org/olat/modules/forms/handler/RubricHandler.java index 746f3fdca58..c5198d3f122 100644 --- a/src/main/java/org/olat/modules/forms/handler/RubricHandler.java +++ b/src/main/java/org/olat/modules/forms/handler/RubricHandler.java @@ -52,9 +52,11 @@ import org.olat.modules.forms.ui.model.ExecutionIdentity; public class RubricHandler implements EvaluationFormElementHandler, SimpleAddPageElementHandler { private final boolean restrictedEdit; + private final boolean restrictedEditWheight; - public RubricHandler(boolean restrictedEdit) { + public RubricHandler(boolean restrictedEdit, boolean restrictedEditWheight) { this.restrictedEdit = restrictedEdit; + this.restrictedEditWheight = restrictedEditWheight; } @Override @@ -84,7 +86,7 @@ public class RubricHandler implements EvaluationFormElementHandler, SimpleAddPag @Override public Controller getEditor(UserRequest ureq, WindowControl wControl, PageElement element) { if(element instanceof Rubric) { - return new RubricEditorController(ureq, wControl, (Rubric)element, restrictedEdit); + return new RubricEditorController(ureq, wControl, (Rubric)element, restrictedEdit, restrictedEditWheight); } return null; } diff --git a/src/main/java/org/olat/modules/forms/manager/EvaluationFormManagerImpl.java b/src/main/java/org/olat/modules/forms/manager/EvaluationFormManagerImpl.java index 63525f4de0c..f4bf6f7163e 100644 --- a/src/main/java/org/olat/modules/forms/manager/EvaluationFormManagerImpl.java +++ b/src/main/java/org/olat/modules/forms/manager/EvaluationFormManagerImpl.java @@ -38,6 +38,7 @@ import org.olat.core.commons.persistence.SortKey; import org.olat.core.id.Identity; import org.olat.core.util.vfs.VFSLeaf; import org.olat.core.util.xml.XStreamHelper; +import org.olat.course.nodes.ms.MSService; import org.olat.fileresource.FileResourceManager; import org.olat.modules.ceditor.DataStorage; import org.olat.modules.forms.EvaluationFormManager; @@ -453,6 +454,12 @@ public class EvaluationFormManagerImpl implements EvaluationFormManager { return evaluationFormSessionDao.hasSessions(formEntry); } + @Override + public boolean isEvaluationFormWeightActivelyUsed(RepositoryEntryRef formEntry) { + // Improve this by declaring and implementing providers + return evaluationFormSurveyDao.hasSurvey(formEntry, MSService.SURVEY_ORES_TYPE_NAME); + } + @Override public EvaluationFormStatistic getSessionsStatistic(SessionFilter filter) { EvaluationFormStatistic statistic = new EvaluationFormStatistic(); diff --git a/src/main/java/org/olat/modules/forms/manager/EvaluationFormSurveyDAO.java b/src/main/java/org/olat/modules/forms/manager/EvaluationFormSurveyDAO.java index 9f950f64df9..f65dca97850 100644 --- a/src/main/java/org/olat/modules/forms/manager/EvaluationFormSurveyDAO.java +++ b/src/main/java/org/olat/modules/forms/manager/EvaluationFormSurveyDAO.java @@ -33,6 +33,7 @@ import org.olat.modules.forms.EvaluationFormSurvey; import org.olat.modules.forms.EvaluationFormSurveyRef; import org.olat.modules.forms.model.jpa.EvaluationFormSurveyImpl; import org.olat.repository.RepositoryEntry; +import org.olat.repository.RepositoryEntryRef; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -114,6 +115,25 @@ class EvaluationFormSurveyDAO { return query.getResultList(); } + boolean hasSurvey(RepositoryEntryRef formEntrRef, String oresTypeName) { + if (formEntrRef == null) return false; + + QueryBuilder sb = new QueryBuilder(); + sb.append("select survey.key"); + sb.append(" from evaluationformsurvey as survey"); + sb.and().append("survey.formEntry.key = :formEntryKey"); + sb.and().append("survey.resName = :oresTypeName"); + + List<Long> keys = dbInstance.getCurrentEntityManager() + .createQuery(sb.toString(), Long.class) + .setParameter("formEntryKey", formEntrRef.getKey()) + .setParameter("oresTypeName", oresTypeName) + .setFirstResult(0) + .setMaxResults(1) + .getResultList(); + return keys == null || keys.isEmpty() || keys.get(0) == null ? false : true; + } + void delete(EvaluationFormSurveyRef survey) { if (survey == null) return; diff --git a/src/main/java/org/olat/modules/forms/ui/EvaluationFormEditorController.java b/src/main/java/org/olat/modules/forms/ui/EvaluationFormEditorController.java index fa52c4a7300..44e49285c5c 100644 --- a/src/main/java/org/olat/modules/forms/ui/EvaluationFormEditorController.java +++ b/src/main/java/org/olat/modules/forms/ui/EvaluationFormEditorController.java @@ -71,14 +71,17 @@ public class EvaluationFormEditorController extends BasicController { private final DataStorage storage; private boolean changes = false; private final boolean restrictedEdit; + private final boolean restrictedEditWeight; private PageEditorController pageEditCtrl; - public EvaluationFormEditorController(UserRequest ureq, WindowControl wControl, File formFile, DataStorage storage, boolean restrictedEdit) { + public EvaluationFormEditorController(UserRequest ureq, WindowControl wControl, File formFile, DataStorage storage, + boolean restrictedEdit, boolean restrictedEditWeight) { super(ureq, wControl); this.formFile = formFile; this.storage = storage; this.restrictedEdit = restrictedEdit; + this.restrictedEditWeight = restrictedEditWeight; if(formFile.exists()) { form = (Form)XStreamHelper.readObject(FormXStream.getXStream(), formFile); } else { @@ -146,7 +149,7 @@ public class EvaluationFormEditorController extends BasicController { ImageHandler imageHandler = new ImageHandler(storage); handlers.add(imageHandler); // handler for rubric - RubricHandler rubricHandler = new RubricHandler(restrictedEdit); + RubricHandler rubricHandler = new RubricHandler(restrictedEdit, restrictedEditWeight); handlers.add(rubricHandler); // handler for text input TextInputHandler textInputHandler = new TextInputHandler(restrictedEdit); diff --git a/src/main/java/org/olat/modules/forms/ui/RubricEditorController.java b/src/main/java/org/olat/modules/forms/ui/RubricEditorController.java index 88413c8a328..ee9eee8273f 100644 --- a/src/main/java/org/olat/modules/forms/ui/RubricEditorController.java +++ b/src/main/java/org/olat/modules/forms/ui/RubricEditorController.java @@ -82,6 +82,7 @@ public class RubricEditorController extends FormBasicController implements PageE private final Rubric rubric; private boolean editMode = false; private final boolean restrictedEdit; + private final boolean restrictedEditWeight; private RubricController rubricCtrl; private final String[] nameDisplayKeys = new String[] { NameDisplay.execution.name(), NameDisplay.report.name() }; @@ -116,10 +117,12 @@ public class RubricEditorController extends FormBasicController implements PageE private FormLink hideEndButton; private FormLayoutContainer settingsLayout; - public RubricEditorController(UserRequest ureq, WindowControl wControl, Rubric rubric, boolean restrictedEdit) { + public RubricEditorController(UserRequest ureq, WindowControl wControl, Rubric rubric, boolean restrictedEdit, + boolean restrictedEditWeight) { super(ureq, wControl, "rubric_editor"); this.rubric = rubric; this.restrictedEdit = restrictedEdit; + this.restrictedEditWeight = restrictedEditWeight; this.showEnd = initShowEnd(); initForm(ureq); @@ -494,7 +497,7 @@ public class RubricEditorController extends FormBasicController implements PageE TextElement weightEl = uifactory.addTextElement("weight" + count.incrementAndGet(), 4, weight, flc); weightEl.setElementCssClass("o_slider_weight"); weightEl.setExampleKey("slider.weight", null); - weightEl.setEnabled(!restrictedEdit); + weightEl.setEnabled(!restrictedEditWeight); SliderRow row = new SliderRow(slider, startLabelEl, endLabelEl, weightEl, createSliderEl()); if(!restrictedEdit) {FormLink deleteButton = uifactory.addFormLink("del." + count.incrementAndGet(), "delete_slider", "", null, flc, Link.BUTTON | Link.NONTRANSLATED); diff --git a/src/main/java/org/olat/upgrade/OLATUpgrade_14_1_0.java b/src/main/java/org/olat/upgrade/OLATUpgrade_14_1_0.java new file mode 100644 index 00000000000..4e2d14277e9 --- /dev/null +++ b/src/main/java/org/olat/upgrade/OLATUpgrade_14_1_0.java @@ -0,0 +1,102 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.upgrade; + +import org.apache.logging.log4j.Logger; +import org.olat.core.commons.persistence.DB; +import org.olat.core.logging.Tracing; +import org.olat.course.nodes.ms.MSService; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * + * Initial date: 10 Jul 2019<br> + * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com + * + */ +public class OLATUpgrade_14_1_0 extends OLATUpgrade { + + private static final Logger log = Tracing.createLoggerFor(OLATUpgrade_14_1_0.class); + + private static final String VERSION = "OLAT_14.1.0"; + private static final String SET_MS_ORES_TYPE_NAME = "SET MS ORES TYPE NAME"; + + @Autowired + private DB dbInstance; + + public OLATUpgrade_14_1_0() { + super(); + } + + @Override + public String getVersion() { + return VERSION; + } + + @Override + public boolean doPostSystemInitUpgrade(UpgradeManager upgradeManager) { + UpgradeHistoryData uhd = upgradeManager.getUpgradesHistory(VERSION); + if (uhd == null) { + // has never been called, initialize + uhd = new UpgradeHistoryData(); + } else if (uhd.isInstallationComplete()) { + return false; + } + + boolean allOk = true; + allOk &= migrateMsOresTypeName(upgradeManager, uhd); + + uhd.setInstallationComplete(allOk); + upgradeManager.setUpgradesHistory(uhd, VERSION); + if(allOk) { + log.info(Tracing.M_AUDIT, "Finished OLATUpgrade_14_1_0 successfully!"); + } else { + log.info(Tracing.M_AUDIT, "OLATUpgrade_14_1_0 not finished, try to restart OpenOlat!"); + } + return allOk; + } + + + private boolean migrateMsOresTypeName(UpgradeManager upgradeManager, UpgradeHistoryData uhd) { + boolean allOk = true; + if (!uhd.getBooleanDataValue(SET_MS_ORES_TYPE_NAME)) { + try { + StringBuilder sb = new StringBuilder(); + sb.append("update evaluationformsurvey as survey"); + sb.append(" set survey.resName='").append(MSService.SURVEY_ORES_TYPE_NAME).append("'"); + sb.append(" where survey.resSubident2 is not null"); + + dbInstance.getCurrentEntityManager() + .createQuery(sb.toString()) + .executeUpdate(); + dbInstance.commitAndCloseSession(); + log.info("Survey resName of ms course nodes migrated."); + } catch (Exception e) { + log.error("", e); + allOk = false; + } + + uhd.setBooleanDataValue(SET_MS_ORES_TYPE_NAME, allOk); + upgradeManager.setUpgradesHistory(uhd, VERSION); + } + return allOk; + } + +} diff --git a/src/main/java/org/olat/upgrade/_spring/upgradeContext.xml b/src/main/java/org/olat/upgrade/_spring/upgradeContext.xml index 4a6c31514dc..4d5aad4be56 100644 --- a/src/main/java/org/olat/upgrade/_spring/upgradeContext.xml +++ b/src/main/java/org/olat/upgrade/_spring/upgradeContext.xml @@ -50,6 +50,7 @@ <bean id="upgrade_13_2_4" class="org.olat.upgrade.OLATUpgrade_13_2_4"/> <bean id="upgrade_13_2_8" class="org.olat.upgrade.OLATUpgrade_13_2_8"/> <bean id="upgrade_14_0_0" class="org.olat.upgrade.OLATUpgrade_14_0_0"/> + <bean id="upgrade_14_1_0" class="org.olat.upgrade.OLATUpgrade_14_1_0"/> </list> </property> </bean> diff --git a/src/test/java/org/olat/modules/forms/manager/EvaluationFormSurveyDAOTest.java b/src/test/java/org/olat/modules/forms/manager/EvaluationFormSurveyDAOTest.java index 8b69c0a6cae..29153fb7e31 100644 --- a/src/test/java/org/olat/modules/forms/manager/EvaluationFormSurveyDAOTest.java +++ b/src/test/java/org/olat/modules/forms/manager/EvaluationFormSurveyDAOTest.java @@ -20,6 +20,7 @@ package org.olat.modules.forms.manager; import static org.assertj.core.api.Assertions.assertThat; +import static org.olat.test.JunitTestHelper.random; import java.util.List; import java.util.UUID; @@ -29,6 +30,7 @@ import org.junit.Before; import org.junit.Test; import org.olat.core.commons.persistence.DB; import org.olat.core.id.OLATResourceable; +import org.olat.core.util.resource.OresHelper; import org.olat.modules.forms.EvaluationFormSurvey; import org.olat.modules.forms.EvaluationFormSurveyRef; import org.olat.repository.RepositoryEntry; @@ -145,6 +147,22 @@ public class EvaluationFormSurveyDAOTest extends OlatTestCase { ); } + @Test + public void shouldCheckIfSurveyOfOresTypeName() { + RepositoryEntry formEntry = evaTestHelper.createFormEntry(); + String resNameA = random(); + OLATResourceable oresA = OresHelper.createOLATResourceableInstance(resNameA, Long.valueOf(1)); + String subIdentA1 = UUID.randomUUID().toString(); + sut.createSurvey(oresA, subIdentA1, null, formEntry, null); + dbInstance.commitAndCloseSession(); + + boolean hasSurvey = sut.hasSurvey(formEntry, resNameA); + assertThat(hasSurvey).isTrue(); + + hasSurvey = sut.hasSurvey(formEntry, random()); + assertThat(hasSurvey).isFalse(); + } + @Test public void shouldDeleteSurvey() { OLATResourceable ores = JunitTestHelper.createRandomResource(); -- GitLab