From 431cbdaaa756d72611ac37583636e19fe5131e15 Mon Sep 17 00:00:00 2001 From: srosse <stephane.rosse@frentix.com> Date: Tue, 17 Nov 2020 08:41:45 +0100 Subject: [PATCH] OO-5082: force reload of curriculum before delete or flagging as deleted --- .../manager/CurriculumServiceImpl.java | 2 +- .../manager/CurriculumServiceTest.java | 80 +++++++++++++++++++ 2 files changed, 81 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/olat/modules/curriculum/manager/CurriculumServiceImpl.java b/src/main/java/org/olat/modules/curriculum/manager/CurriculumServiceImpl.java index 1c559a5ba04..d22dc12c577 100644 --- a/src/main/java/org/olat/modules/curriculum/manager/CurriculumServiceImpl.java +++ b/src/main/java/org/olat/modules/curriculum/manager/CurriculumServiceImpl.java @@ -168,7 +168,7 @@ public class CurriculumServiceImpl implements CurriculumService, OrganisationDat for(CurriculumElement rootElement:curriculum.getRootElements()) { deleted &= deleteCurriculumElement(rootElement); } - dbInstance.commit(); + dbInstance.commitAndCloseSession(); curriculum = (CurriculumImpl)getCurriculum(curriculumRef); if(deleted) { curriculumDao.delete(curriculum); diff --git a/src/test/java/org/olat/modules/curriculum/manager/CurriculumServiceTest.java b/src/test/java/org/olat/modules/curriculum/manager/CurriculumServiceTest.java index e2f62c87730..0fe74b36def 100644 --- a/src/test/java/org/olat/modules/curriculum/manager/CurriculumServiceTest.java +++ b/src/test/java/org/olat/modules/curriculum/manager/CurriculumServiceTest.java @@ -24,8 +24,10 @@ import java.util.List; import org.junit.Assert; import org.junit.Test; +import org.olat.basesecurity.OrganisationService; import org.olat.core.commons.persistence.DB; import org.olat.core.id.Identity; +import org.olat.core.id.Organisation; import org.olat.core.id.Roles; import org.olat.modules.curriculum.Curriculum; import org.olat.modules.curriculum.CurriculumCalendars; @@ -37,7 +39,10 @@ import org.olat.modules.curriculum.CurriculumLectures; import org.olat.modules.curriculum.CurriculumRef; import org.olat.modules.curriculum.CurriculumRoles; import org.olat.modules.curriculum.CurriculumService; +import org.olat.modules.curriculum.CurriculumStatus; import org.olat.modules.curriculum.model.CurriculumElementRepositoryEntryViews; +import org.olat.modules.quality.QualityDataCollection; +import org.olat.modules.quality.QualityService; import org.olat.repository.RepositoryEntry; import org.olat.repository.RepositoryEntryStatusEnum; import org.olat.repository.RepositoryManager; @@ -56,9 +61,13 @@ public class CurriculumServiceTest extends OlatTestCase { @Autowired private DB dbInstance; @Autowired + private QualityService qualityService; + @Autowired private CurriculumService curriculumService; @Autowired private RepositoryManager repositoryManager; + @Autowired + private OrganisationService organisationService; @Test public void addCurriculumManagers() { @@ -115,4 +124,75 @@ public class CurriculumServiceTest extends OlatTestCase { Assert.assertFalse(membership.isRepositoryEntryOwner()); Assert.assertFalse(membership.isCurriculumElementOwner()); } + + @Test + public void deleteCurriculum() { + Curriculum curriculum = curriculumService.createCurriculum("CUR-3", "Curriculum 3", "Curriculum", null); + CurriculumElement element1 = curriculumService.createCurriculumElement("Element-for-rel", "Element for relation", + CurriculumElementStatus.active, null, null, null, null, CurriculumCalendars.disabled, + CurriculumLectures.disabled, CurriculumLearningProgress.disabled, curriculum); + CurriculumElement element2 = curriculumService.createCurriculumElement("Element-for-del", "Element for relation", + CurriculumElementStatus.active, null, null, null, null, CurriculumCalendars.disabled, + CurriculumLectures.disabled, CurriculumLearningProgress.disabled, curriculum); + + Identity author = JunitTestHelper.createAndPersistIdentityAsRndUser("cur-el-re-auth"); + RepositoryEntry entry = JunitTestHelper.createRandomRepositoryEntry(author); + dbInstance.commit(); + + // add the course and a participant to the curriculum + curriculumService.addRepositoryEntry(element2, entry, false); + Identity participant = JunitTestHelper.createAndPersistIdentityAsRndUser("cur-el-re-part"); + curriculumService.addMember(element1, participant, CurriculumRoles.participant); + dbInstance.commitAndCloseSession(); + + List<CurriculumRef> curriculumList = Collections.singletonList(curriculum); + List<CurriculumElementRepositoryEntryViews> myElements = curriculumService.getCurriculumElements(participant, Roles.userRoles(), curriculumList); + Assert.assertNotNull(myElements); + Assert.assertEquals(2, myElements.size()); + + curriculumService.deleteCurriculum(curriculum); + dbInstance.commitAndCloseSession(); + + // check + Curriculum deletedCurriculum = curriculumService.getCurriculum(curriculum); + Assert.assertNull(deletedCurriculum); + } + + @Test + public void deleteCurriculumInQuality() { + Curriculum curriculum = curriculumService.createCurriculum("CUR-3", "Curriculum 3", "Curriculum", null); + CurriculumElement element1 = curriculumService.createCurriculumElement("Element-for-rel", "Element for relation", + CurriculumElementStatus.active, null, null, null, null, CurriculumCalendars.disabled, + CurriculumLectures.disabled, CurriculumLearningProgress.disabled, curriculum); + CurriculumElement element2 = curriculumService.createCurriculumElement("Element-for-del", "Element for relation", + CurriculumElementStatus.active, null, null, null, null, CurriculumCalendars.disabled, + CurriculumLectures.disabled, CurriculumLearningProgress.disabled, curriculum); + + Identity author = JunitTestHelper.createAndPersistIdentityAsRndUser("cur-el-re-auth"); + RepositoryEntry entry = JunitTestHelper.createRandomRepositoryEntry(author); + Organisation organisation = organisationService.getDefaultOrganisation(); + QualityDataCollection dataCollection = qualityService.createDataCollection(Collections.singletonList(organisation), entry); + dataCollection.setTopicCurriculumElement(element1); + qualityService.updateDataCollection(dataCollection); + dbInstance.commit(); + + // add the course and a participant to the curriculum + curriculumService.addRepositoryEntry(element2, entry, false); + Identity participant = JunitTestHelper.createAndPersistIdentityAsRndUser("cur-el-re-part"); + curriculumService.addMember(element1, participant, CurriculumRoles.participant); + dbInstance.commitAndCloseSession(); + + List<CurriculumRef> curriculumList = Collections.singletonList(curriculum); + List<CurriculumElementRepositoryEntryViews> myElements = curriculumService.getCurriculumElements(participant, Roles.userRoles(), curriculumList); + Assert.assertNotNull(myElements); + Assert.assertEquals(2, myElements.size()); + + curriculumService.deleteCurriculum(curriculum); + dbInstance.commitAndCloseSession(); + + // check + Curriculum deletedCurriculum = curriculumService.getCurriculum(curriculum); + Assert.assertNotNull(deletedCurriculum); + Assert.assertEquals(CurriculumStatus.deleted.name(), deletedCurriculum.getStatus()); + } } -- GitLab