/** * <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.portfolio.manager; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.UUID; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.olat.basesecurity.BaseSecurity; import org.olat.basesecurity.GroupRoles; import org.olat.basesecurity.SecurityGroup; import org.olat.core.commons.persistence.DB; import org.olat.core.id.Identity; import org.olat.core.id.Persistable; import org.olat.core.id.Roles; import org.olat.portfolio.manager.EPFrontendManager; import org.olat.portfolio.manager.EPStructureManager; import org.olat.portfolio.model.artefacts.AbstractArtefact; import org.olat.portfolio.model.structel.EPStructureElement; import org.olat.portfolio.model.structel.EPStructureToStructureLink; import org.olat.portfolio.model.structel.EPStructuredMap; import org.olat.portfolio.model.structel.EPTargetResource; import org.olat.portfolio.model.structel.PortfolioStructure; import org.olat.portfolio.model.structel.PortfolioStructureMap; import org.olat.repository.RepositoryEntry; import org.olat.repository.RepositoryManager; import org.olat.repository.RepositoryService; import org.olat.resource.OLATResource; import org.olat.resource.OLATResourceManager; import org.olat.test.JunitTestHelper; import org.olat.test.OlatTestCase; import org.springframework.beans.factory.annotation.Autowired; /** * * Description:<br> * Integration test for the DB * * <P> * Initial Date: 24 juin 2010 <br> * @author srosse, stephane.rosse@frentix.com */ public class EPStructureManagerTest extends OlatTestCase { @Autowired private DB dbInstance; @Autowired private EPStructureManager epStructureManager; @Autowired private EPFrontendManager epFrontendManager; @Autowired private RepositoryManager repositoryManager; @Autowired private RepositoryService repositoryService; @Autowired private OLATResourceManager resourceManager; @Autowired private BaseSecurity securityManager; private static Identity ident1, ident2; private static boolean isInitialized = false; @Before public void setUp() { if(!isInitialized) { ident1 = JunitTestHelper.createAndPersistIdentityAsUser(UUID.randomUUID().toString()); ident2 = JunitTestHelper.createAndPersistIdentityAsUser(UUID.randomUUID().toString()); } } @Test public void testManagers() { assertNotNull(dbInstance); assertNotNull(epStructureManager); } @Test public void testGetStructureElementsForUser(){ Identity user = JunitTestHelper.createAndPersistIdentityAsRndUser("EP-1-"); PortfolioStructure el = epFrontendManager.createAndPersistPortfolioDefaultMap(user, "users-test-map", "a-map-to-test-get-afterwards"); assertNotNull(el); dbInstance.commitAndCloseSession(); List<SecurityGroup> secGroups = securityManager.getSecurityGroupsForIdentity(user); assertNotNull(secGroups); assertTrue(secGroups.size() >= 1); List<PortfolioStructure> elRes = epFrontendManager.getStructureElementsForUser(user); assertNotNull(elRes); assertTrue(elRes.size() == 1); assertEquals( ((EPStructureElement)elRes.get(0)).getTitle(), "users-test-map"); // get another map PortfolioStructure el2 = epFrontendManager.createAndPersistPortfolioDefaultMap(user, "users-test-map-2", "2-a-map-to-test-get-afterwards"); assertNotNull(el2); dbInstance.commitAndCloseSession(); List<PortfolioStructure> elRes2 = epFrontendManager.getStructureElementsForUser(user); assertNotNull(elRes2); assertTrue(elRes2.size() == 2); } @Test public void testGetReferencedMapsForArtefact() { PortfolioStructure el = epFrontendManager.createAndPersistPortfolioStructureElement(null, "structure-el", "structure-element"); dbInstance.commitAndCloseSession(); AbstractArtefact artefact = epFrontendManager.createAndPersistArtefact(ident1, "Forum"); epFrontendManager.addArtefactToStructure(ident1, artefact, el); dbInstance.commitAndCloseSession(); //get the referenced maps List<PortfolioStructure> mapList = epFrontendManager.getReferencedMapsForArtefact(artefact); assertTrue(((Persistable)el).equalsByPersistableKey((Persistable)mapList.get(0))); dbInstance.commitAndCloseSession(); //make the test more complex //reload the structure element el = epFrontendManager.loadPortfolioStructureByKey(el.getKey()); // add artefact to substructure (page) and check for the same map PortfolioStructure childEl = epFrontendManager.createAndPersistPortfolioStructureElement(el, "child-structure-el", "child-structure-element"); el = epFrontendManager.removeArtefactFromStructure(artefact, el); epFrontendManager.addArtefactToStructure(ident1, artefact, childEl); dbInstance.commitAndCloseSession(); //get the referenced maps List<PortfolioStructure> mapList2 = epFrontendManager.getReferencedMapsForArtefact(artefact); assertTrue(((Persistable)el).equalsByPersistableKey((Persistable)mapList2.get(0))); dbInstance.commitAndCloseSession(); // add artefact to 3 maps and check to get all of them PortfolioStructure el2 = epFrontendManager.createAndPersistPortfolioStructureElement(null, "structure-el-2", "structure-element-2"); epFrontendManager.addArtefactToStructure(ident1, artefact, el2); PortfolioStructure el3 = epFrontendManager.createAndPersistPortfolioStructureElement(null, "structure-el-3", "structure-element-3"); epFrontendManager.addArtefactToStructure(ident1, artefact, el3); List<PortfolioStructure> mapList3 = epFrontendManager.getReferencedMapsForArtefact(artefact); assertEquals(3, mapList3.size()); boolean found = false; for(PortfolioStructure mapValue:mapList3) { if(((Persistable)mapValue).equalsByPersistableKey((Persistable)el)) { found= true; } } assertTrue(found); } @Test public void testCreateAndSaveElement() { PortfolioStructure el = epFrontendManager.createAndPersistPortfolioStructureElement(null, "structure-el", "structure-element"); dbInstance.commitAndCloseSession(); assertNotNull(el); assertNotNull(el.getOlatResource()); PortfolioStructure retrievedEl = epFrontendManager.loadPortfolioStructureByKey(el.getKey()); assertNotNull(retrievedEl); assertNotNull(retrievedEl.getOlatResource()); OLATResource resource = resourceManager.findResourceable(el.getResourceableId(), el.getResourceableTypeName()); assertNotNull(resource); } @Test public void testCreateAndSaveTreeOfElements() { //test save parent and child PortfolioStructure parentEl = epFrontendManager.createAndPersistPortfolioStructureElement(null, "parent-structure-el", "parent-structure-element"); PortfolioStructure childEl = epFrontendManager.createAndPersistPortfolioStructureElement(parentEl, "child-structure-el", "child-structure-element"); dbInstance.commitAndCloseSession(); //test load by key PortfolioStructure retrievedParentEl = epFrontendManager.loadPortfolioStructureByKey(parentEl.getKey()); assertNotNull(retrievedParentEl); assertNotNull(retrievedParentEl.getOlatResource()); //test load by key PortfolioStructure retrievedChildEl = epFrontendManager.loadPortfolioStructureByKey(childEl.getKey()); PortfolioStructure retrievedParentEl2 = epFrontendManager.loadStructureParent(retrievedChildEl); assertNotNull(retrievedChildEl); assertNotNull(retrievedChildEl.getOlatResource()); assertNotNull(retrievedParentEl2); assertEquals(parentEl.getKey(), retrievedParentEl2.getKey()); dbInstance.commitAndCloseSession(); //test get children List<PortfolioStructure> retrievedChilrenEl = epFrontendManager.loadStructureChildren(parentEl); assertNotNull(retrievedChilrenEl); assertEquals(1, retrievedChilrenEl.size()); assertEquals(childEl.getKey(), retrievedChilrenEl.get(0).getKey()); assertNotNull(((EPStructureElement)retrievedChilrenEl.get(0)).getRoot()); assertEquals(parentEl.getKey(), ((EPStructureElement)retrievedChilrenEl.get(0)).getRoot().getKey()); } @Test public void testCreateAndRetrieveElement() { PortfolioStructure el = epFrontendManager.createAndPersistPortfolioStructureElement(null, "structure-el-2", "structure-element-2"); dbInstance.commitAndCloseSession(); PortfolioStructure el2 = epStructureManager.loadPortfolioStructure(el.getOlatResource()); assertNotNull(el2); } @Test public void testCreateAndRetrieveCollectRestrictionElement() { PortfolioStructure el = epFrontendManager.createAndPersistPortfolioStructureElement(null, "structure-el-3", "structure-element-3"); epStructureManager.addCollectRestriction(el, "Forum", "minimum", 3); epStructureManager.savePortfolioStructure(el); dbInstance.commitAndCloseSession(); PortfolioStructure retrievedEl = epStructureManager.loadPortfolioStructure(el.getOlatResource()); assertNotNull(retrievedEl); assertTrue(retrievedEl instanceof EPStructureElement); EPStructureElement retrievedStructEl = (EPStructureElement)retrievedEl; assertNotNull(retrievedStructEl.getCollectRestrictions()); assertEquals("Forum", retrievedStructEl.getCollectRestrictions().get(0).getArtefactType()); assertEquals("minimum", retrievedStructEl.getCollectRestrictions().get(0).getRestriction()); assertEquals(3, retrievedStructEl.getCollectRestrictions().get(0).getAmount()); } @Test public void testChildrenBetweenSeveralSessions() { //test save parent and child PortfolioStructure parentEl = epFrontendManager.createAndPersistPortfolioStructureElement(null, "parent-structure-el", "parent-structure-element"); PortfolioStructure childEl1 = epFrontendManager.createAndPersistPortfolioStructureElement(parentEl, "multi-session-structure-el-1", "child-structure-element"); dbInstance.commitAndCloseSession(); PortfolioStructure childEl2 = epFrontendManager.createAndPersistPortfolioStructureElement(parentEl, "multi-session-structure-el-2", "child-structure-element"); dbInstance.commitAndCloseSession(); PortfolioStructure childEl3 = epFrontendManager.createAndPersistPortfolioStructureElement(parentEl, "multi-session-structure-el-3", "child-structure-element"); ((EPStructureElement)parentEl).setTitle("parent-structure-el-prime"); epStructureManager.savePortfolioStructure(parentEl); dbInstance.commitAndCloseSession(); //test if all children are saved List<PortfolioStructure> retrievedChilrenEl = epFrontendManager.loadStructureChildren(parentEl); assertNotNull(retrievedChilrenEl); assertEquals(3, retrievedChilrenEl.size()); //test if they are ordered assertEquals(childEl1.getKey(), retrievedChilrenEl.get(0).getKey()); assertEquals(childEl2.getKey(), retrievedChilrenEl.get(1).getKey()); assertEquals(childEl3.getKey(), retrievedChilrenEl.get(2).getKey()); //test the title too (why not?) assertEquals("multi-session-structure-el-1", ((EPStructureElement)retrievedChilrenEl.get(0)).getTitle()); assertEquals("multi-session-structure-el-2", ((EPStructureElement)retrievedChilrenEl.get(1)).getTitle()); assertEquals("multi-session-structure-el-3", ((EPStructureElement)retrievedChilrenEl.get(2)).getTitle()); //test if the change to the parent was not lost PortfolioStructure retrievedParentEl = epFrontendManager.loadPortfolioStructureByKey(parentEl.getKey()); assertEquals("parent-structure-el-prime", ((EPStructureElement)retrievedParentEl).getTitle()); dbInstance.commitAndCloseSession(); //test that the children are not always loaded PortfolioStructure retrievedParentEl2 = epFrontendManager.loadPortfolioStructureByKey(parentEl.getKey()); dbInstance.commitAndCloseSession(); boolean failedToLazyLoadChildren; try { List<EPStructureToStructureLink> children = ((EPStructureElement)retrievedParentEl2).getInternalChildren(); failedToLazyLoadChildren = (children == null || children.isEmpty()); } catch(Exception e) { failedToLazyLoadChildren = true; } assertTrue(failedToLazyLoadChildren); dbInstance.commitAndCloseSession(); //test load parent PortfolioStructure retrievedParentEl3 = epFrontendManager.loadStructureParent(childEl1); assertNotNull(retrievedParentEl3); assertEquals(parentEl.getKey(), retrievedParentEl3.getKey()); PortfolioStructure retrievedParentEl4 = epFrontendManager.loadStructureParent(childEl2); assertNotNull(retrievedParentEl4); assertEquals(parentEl.getKey(), retrievedParentEl4.getKey()); PortfolioStructure retrievedParentEl5 = epFrontendManager.loadStructureParent(childEl3); assertNotNull(retrievedParentEl5); assertEquals(parentEl.getKey(), retrievedParentEl5.getKey()); } @Test public void testDeleteChildren() { //test save parent and 3 children PortfolioStructure parentEl = epFrontendManager.createAndPersistPortfolioStructureElement(null, "remove-parent-structure-el", "parent-structure-element"); PortfolioStructure childEl1 = epFrontendManager.createAndPersistPortfolioStructureElement(parentEl, "remove-structure-el-1", "remove-child-structure-element"); PortfolioStructure childEl2 = epFrontendManager.createAndPersistPortfolioStructureElement(parentEl, "remove-structure-el-2", "remove-child-structure-element"); PortfolioStructure childEl3 = epFrontendManager.createAndPersistPortfolioStructureElement(parentEl, "remove-structure-el-3", "remove-child-structure-element"); dbInstance.commitAndCloseSession(); //remove a child epStructureManager.removeStructure(parentEl, childEl2); dbInstance.commitAndCloseSession(); //check if the structure element has been removed List<PortfolioStructure> retrievedChildrenEl = epFrontendManager.loadStructureChildren(parentEl); assertNotNull(retrievedChildrenEl); assertEquals(2, retrievedChildrenEl.size()); assertEquals(childEl1.getKey(), retrievedChildrenEl.get(0).getKey()); assertEquals(childEl3.getKey(), retrievedChildrenEl.get(1).getKey()); } @Test public void testChildrenPaging() { //save parent and 20 children PortfolioStructure parentEl = epFrontendManager.createAndPersistPortfolioStructureElement(null, "paged-parent-structure-el", "parent-structure-element"); List<PortfolioStructure> children = new ArrayList<PortfolioStructure>(); for(int i=0;i<20;i++) { PortfolioStructure childEl = epFrontendManager.createAndPersistPortfolioStructureElement(parentEl, "paged-structure-el-" + i, "paged-child-structure-element"); children.add(childEl); } dbInstance.commitAndCloseSession(); //check if the paging return the right children List<PortfolioStructure> childrenSubset = epFrontendManager.loadStructureChildren(parentEl, 15, 10); assertNotNull(childrenSubset); assertEquals(5, childrenSubset.size()); assertEquals(children.get(15).getKey(), childrenSubset.get(0).getKey()); assertEquals(children.get(16).getKey(), childrenSubset.get(1).getKey()); assertEquals(children.get(17).getKey(), childrenSubset.get(2).getKey()); assertEquals(children.get(18).getKey(), childrenSubset.get(3).getKey()); assertEquals(children.get(19).getKey(), childrenSubset.get(4).getKey()); } @Test public void testCreateStructureMapTemplate() { //save parent and 20 children PortfolioStructureMap template = epStructureManager.createPortfolioMapTemplate(ident1, "paged-parent-structure-el", "parent-structure-element"); epStructureManager.savePortfolioStructure(template); dbInstance.commitAndCloseSession(); //not very usefull but... assertNotNull(template); //check if the olat resource is persisted OLATResource resource = resourceManager.findResourceable(template.getResourceableId(), template.getResourceableTypeName()); assertNotNull(resource); //check if the repository entry is persisted RepositoryEntry re = repositoryManager.lookupRepositoryEntry(resource, false); assertNotNull(re); } @Test public void testUseStructureMapTemplate() { //save parent and 20 children PortfolioStructureMap template = epStructureManager.createPortfolioMapTemplate(ident1, "paged-parent-structure-el", "parent-structure-element"); epStructureManager.savePortfolioStructure(template); dbInstance.commitAndCloseSession(); PortfolioStructureMap map = epFrontendManager.createAndPersistPortfolioStructuredMap(template, ident1, "cloned-map", "cloned-map-from-template", null, null, null); ((EPStructuredMap)map).setReturnDate(new Date()); EPTargetResource targetResource = ((EPStructuredMap)map).getTargetResource(); targetResource.setResourceableTypeName("CourseModule"); targetResource.setResourceableId(234l); targetResource.setSubPath("3894580"); targetResource.setBusinessPath("[RepositoryEntry:23647598][CourseNode:934598]"); epStructureManager.savePortfolioStructure(map); dbInstance.commitAndCloseSession(); //test PortfolioStructureMap retrievedMap = (PortfolioStructureMap)epFrontendManager.loadPortfolioStructureByKey(map.getKey()); assertNotNull(retrievedMap); assertNotNull(((EPStructuredMap)retrievedMap).getReturnDate()); assertNotNull(((EPStructuredMap)retrievedMap).getStructuredMapSource()); assertNotNull(((EPStructuredMap)retrievedMap).getTargetResource()); EPTargetResource retriviedTargetResource = ((EPStructuredMap)retrievedMap).getTargetResource(); assertEquals("CourseModule", retriviedTargetResource.getResourceableTypeName()); assertEquals(new Long(234l), retriviedTargetResource.getResourceableId()); assertEquals("3894580", retriviedTargetResource.getSubPath()); assertEquals("[RepositoryEntry:23647598][CourseNode:934598]", retriviedTargetResource.getBusinessPath()); } @Test public void testLoadPortfolioStructuredMap(){ Identity user = JunitTestHelper.createAndPersistIdentityAsRndUser("EP-tmp-"); //create a template PortfolioStructureMap template = epStructureManager.createPortfolioMapTemplate(user, "paged-parent-structure-el", "parent-structure-element"); epStructureManager.savePortfolioStructure(template); dbInstance.commitAndCloseSession(); //clone the template PortfolioStructureMap map = epFrontendManager.createAndPersistPortfolioStructuredMap(template, user, "cloned-map", "cloned-map-from-template", null, null, null); ((EPStructuredMap)map).setReturnDate(new Date()); EPTargetResource targetResource = ((EPStructuredMap)map).getTargetResource(); targetResource.setResourceableTypeName("CourseModule"); targetResource.setResourceableId(234l); targetResource.setSubPath(UUID.randomUUID().toString()); targetResource.setBusinessPath("[RepositoryEntry:23647599][CourseNode:934599]"); epStructureManager.savePortfolioStructure(map); dbInstance.commitAndCloseSession(); //load the cloned map another map PortfolioStructureMap myClonedMap = epStructureManager.loadPortfolioStructuredMap(user, template, targetResource.getOLATResourceable(), targetResource.getSubPath(), targetResource.getBusinessPath()); Assert.assertNotNull(myClonedMap); } @Test public void testLoadPortfolioStructuredMaps() { Identity user = JunitTestHelper.createAndPersistIdentityAsRndUser("EP-tmp-"); //a template PortfolioStructureMap template = epStructureManager.createPortfolioMapTemplate(user, "paged-parent-structure-el", "parent-structure-element"); epStructureManager.savePortfolioStructure(template); dbInstance.commitAndCloseSession(); //clone the template PortfolioStructureMap map = epFrontendManager.createAndPersistPortfolioStructuredMap(template, user, "cloned-map", "cloned-map-from-template", null, null, null); ((EPStructuredMap)map).setReturnDate(new Date()); EPTargetResource targetResource = ((EPStructuredMap)map).getTargetResource(); targetResource.setResourceableTypeName("CourseModule"); targetResource.setResourceableId(234l); targetResource.setSubPath(UUID.randomUUID().toString()); targetResource.setBusinessPath("[RepositoryEntry:23647600][CourseNode:934600]"); epStructureManager.savePortfolioStructure(map); dbInstance.commitAndCloseSession(); //load the cloned map another map List<PortfolioStructureMap> myCloneAlt = epStructureManager.loadPortfolioStructuredMaps(user, targetResource.getOLATResourceable(), targetResource.getSubPath(), targetResource.getBusinessPath()); Assert.assertNotNull(myCloneAlt); Assert.assertEquals(1, myCloneAlt.size()); Assert.assertEquals(map, myCloneAlt.get(0)); } @Test public void loadPortfolioStructure_resourceable() { Identity user = JunitTestHelper.createAndPersistIdentityAsRndUser("EP-res-tmp-"); //a template PortfolioStructureMap template = epStructureManager.createPortfolioMapTemplate(user, "resourced-el", "resource-element"); epStructureManager.savePortfolioStructure(template); dbInstance.commitAndCloseSession(); OLATResource resource = template.getOlatResource(); PortfolioStructure structure = epStructureManager.loadPortfolioStructure(resource); Assert.assertNotNull(structure); Assert.assertEquals(template, structure); } @Test public void testCountStructureElementsFromOthers() { Identity user = JunitTestHelper.createAndPersistIdentityAsRndUser("EP-tmp-"); PortfolioStructureMap map = epStructureManager.createPortfolioDefaultMap("map-el", "map-element"); epStructureManager.savePortfolioStructure(map); dbInstance.commitAndCloseSession(); //clone the template int count = epStructureManager.countStructureElementsFromOthers(user, null); Assert.assertEquals(0, count); } @Test public void testMoveUp() { //save parent and 5 children PortfolioStructure parentEl = epFrontendManager.createAndPersistPortfolioStructureElement(null, "move-up-parent-structure-el-1", "move-up-structure-element"); List<PortfolioStructure> children = new ArrayList<PortfolioStructure>(); for(int i=0;i<5;i++) { PortfolioStructure childEl = epFrontendManager.createAndPersistPortfolioStructureElement(parentEl, "paged-structure-el-" + i, "paged-child-structure-element"); children.add(childEl); } dbInstance.commitAndCloseSession(); //check if the paging return the right children List<PortfolioStructure> childrenSubset = epFrontendManager.loadStructureChildren(parentEl); assertNotNull(childrenSubset); assertEquals(5, childrenSubset.size()); assertEquals(children.get(0).getKey(), childrenSubset.get(0).getKey()); assertEquals(children.get(1).getKey(), childrenSubset.get(1).getKey()); assertEquals(children.get(2).getKey(), childrenSubset.get(2).getKey()); assertEquals(children.get(3).getKey(), childrenSubset.get(3).getKey()); assertEquals(children.get(4).getKey(), childrenSubset.get(4).getKey()); dbInstance.commitAndCloseSession(); //move up the first place epStructureManager.moveUp(parentEl, children.get(0)); dbInstance.commitAndCloseSession(); //check that all is the same List<PortfolioStructure> persistedChildren1 = epFrontendManager.loadStructureChildren(parentEl); assertNotNull(persistedChildren1); assertEquals(5, persistedChildren1.size()); assertEquals(children.get(0).getKey(), persistedChildren1.get(0).getKey()); assertEquals(children.get(1).getKey(), persistedChildren1.get(1).getKey()); assertEquals(children.get(2).getKey(), persistedChildren1.get(2).getKey()); assertEquals(children.get(3).getKey(), persistedChildren1.get(3).getKey()); assertEquals(children.get(4).getKey(), persistedChildren1.get(4).getKey()); dbInstance.commitAndCloseSession(); //move the second to the first place epStructureManager.moveUp(parentEl, children.get(1)); dbInstance.commitAndCloseSession(); //check that all is the same List<PortfolioStructure> persistedChildren2 = epFrontendManager.loadStructureChildren(parentEl); assertNotNull(persistedChildren2); assertEquals(5, persistedChildren2.size()); assertEquals(children.get(1).getKey(), persistedChildren2.get(0).getKey()); assertEquals(children.get(0).getKey(), persistedChildren2.get(1).getKey()); assertEquals(children.get(2).getKey(), persistedChildren2.get(2).getKey()); assertEquals(children.get(3).getKey(), persistedChildren2.get(3).getKey()); assertEquals(children.get(4).getKey(), persistedChildren2.get(4).getKey()); dbInstance.commitAndCloseSession(); //move up the last epStructureManager.moveUp(parentEl, children.get(4)); epStructureManager.savePortfolioStructure(parentEl); dbInstance.commitAndCloseSession(); //check that all is the same List<PortfolioStructure> persistedChildren3 = epFrontendManager.loadStructureChildren(parentEl); assertNotNull(persistedChildren3); assertEquals(5, persistedChildren3.size()); assertEquals(children.get(1).getKey(), persistedChildren3.get(0).getKey()); assertEquals(children.get(0).getKey(), persistedChildren3.get(1).getKey()); assertEquals(children.get(2).getKey(), persistedChildren3.get(2).getKey()); assertEquals(children.get(4).getKey(), persistedChildren3.get(3).getKey()); assertEquals(children.get(3).getKey(), persistedChildren3.get(4).getKey()); } @Test public void testMoveDown() { //save parent and 5 children PortfolioStructure parentEl = epFrontendManager.createAndPersistPortfolioStructureElement(null, "move-up-parent-structure-el-1", "move-up-structure-element"); List<PortfolioStructure> children = new ArrayList<PortfolioStructure>(); for(int i=0;i<5;i++) { PortfolioStructure childEl = epFrontendManager.createAndPersistPortfolioStructureElement(parentEl, "paged-structure-el-" + i, "paged-child-structure-element"); children.add(childEl); } dbInstance.commitAndCloseSession(); //check if the paging return the right children List<PortfolioStructure> childrenSubset = epFrontendManager.loadStructureChildren(parentEl); assertNotNull(childrenSubset); assertEquals(5, childrenSubset.size()); assertEquals(children.get(0).getKey(), childrenSubset.get(0).getKey()); assertEquals(children.get(1).getKey(), childrenSubset.get(1).getKey()); assertEquals(children.get(2).getKey(), childrenSubset.get(2).getKey()); assertEquals(children.get(3).getKey(), childrenSubset.get(3).getKey()); assertEquals(children.get(4).getKey(), childrenSubset.get(4).getKey()); dbInstance.commitAndCloseSession(); //move down the last epStructureManager.moveDown(parentEl, children.get(4)); dbInstance.commitAndCloseSession(); //check that all is the same List<PortfolioStructure> persistedChildren1 = epFrontendManager.loadStructureChildren(parentEl); assertNotNull(persistedChildren1); assertEquals(5, persistedChildren1.size()); assertEquals(children.get(0).getKey(), persistedChildren1.get(0).getKey()); assertEquals(children.get(1).getKey(), persistedChildren1.get(1).getKey()); assertEquals(children.get(2).getKey(), persistedChildren1.get(2).getKey()); assertEquals(children.get(3).getKey(), persistedChildren1.get(3).getKey()); assertEquals(children.get(4).getKey(), persistedChildren1.get(4).getKey()); dbInstance.commitAndCloseSession(); //move down to the last place epStructureManager.moveDown(parentEl, children.get(3)); dbInstance.commitAndCloseSession(); //check that all is the same List<PortfolioStructure> persistedChildren2 = epFrontendManager.loadStructureChildren(parentEl); assertNotNull(persistedChildren2); assertEquals(5, persistedChildren2.size()); assertEquals(children.get(0).getKey(), persistedChildren2.get(0).getKey()); assertEquals(children.get(1).getKey(), persistedChildren2.get(1).getKey()); assertEquals(children.get(2).getKey(), persistedChildren2.get(2).getKey()); assertEquals(children.get(4).getKey(), persistedChildren2.get(3).getKey()); assertEquals(children.get(3).getKey(), persistedChildren2.get(4).getKey()); dbInstance.commitAndCloseSession(); //move down the first to the second position epStructureManager.moveDown(parentEl, children.get(0)); epStructureManager.savePortfolioStructure(parentEl); dbInstance.commitAndCloseSession(); //check that all is the same List<PortfolioStructure> persistedChildren3 = epFrontendManager.loadStructureChildren(parentEl); assertNotNull(persistedChildren3); assertEquals(5, persistedChildren3.size()); assertEquals(children.get(1).getKey(), persistedChildren3.get(0).getKey()); assertEquals(children.get(0).getKey(), persistedChildren3.get(1).getKey()); assertEquals(children.get(2).getKey(), persistedChildren3.get(2).getKey()); assertEquals(children.get(4).getKey(), persistedChildren3.get(3).getKey()); assertEquals(children.get(3).getKey(), persistedChildren3.get(4).getKey()); } @Test public void testAddAuthorToMap() { //save the map PortfolioStructureMap map = epStructureManager.createPortfolioMapTemplate(ident1, "add-author-map-1", "add-an-author-to-map-template"); epStructureManager.savePortfolioStructure(map); dbInstance.commitAndCloseSession(); //add an author epStructureManager.addAuthor(map, ident2); dbInstance.commitAndCloseSession(); //check that the author are in the OLATResource resource = resourceManager.findResourceable(map.getResourceableId(), map.getResourceableTypeName()); assertNotNull(resource); RepositoryEntry re = repositoryManager.lookupRepositoryEntry(resource, false); assertNotNull(re); List<Identity> authors = repositoryService.getMembers(re, GroupRoles.owner.name()); assertEquals(2, authors.size()); assertTrue(authors.contains(ident1));//owner assertTrue(authors.contains(ident2));//owner } @Test public void testRemoveAuthorToMap() { //save the map PortfolioStructureMap map = epStructureManager.createPortfolioMapTemplate(ident1, "add-author-map-1", "add-an-author-to-map-template"); epStructureManager.savePortfolioStructure(map); dbInstance.commitAndCloseSession(); //add an author epStructureManager.addAuthor(map, ident2); dbInstance.commitAndCloseSession(); //check that the author are in the OLATResource resource = resourceManager.findResourceable(map.getResourceableId(), map.getResourceableTypeName()); assertNotNull(resource); RepositoryEntry re = repositoryManager.lookupRepositoryEntry(resource, false); assertNotNull(re); List<Identity> authors = repositoryService.getMembers(re, GroupRoles.owner.name()); assertEquals(2, authors.size()); dbInstance.commitAndCloseSession(); //and remove the author epStructureManager.removeAuthor(map, ident2); dbInstance.commitAndCloseSession(); List<Identity> singleAuthor = repositoryService.getMembers(re, GroupRoles.owner.name()); assertEquals(1, singleAuthor.size()); assertTrue(singleAuthor.contains(ident1));//owner assertFalse(singleAuthor.contains(ident2));//owner securityManager.getSecurityGroupsForIdentity(ident1); repositoryManager.queryReferencableResourcesLimitType(ident1, new Roles(false, false, false, false, false, false, false), null, null, null, null) ; } }