Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
OLAT CI-CD Testing Project
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Requirements
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Locked files
Deploy
Package Registry
Container Registry
Model registry
Operate
Terraform modules
Monitor
Service Desk
Analyze
Contributor analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Lars Oliver Dam
OLAT CI-CD Testing Project
Commits
7a54f983
Commit
7a54f983
authored
10 years ago
by
srosse
Browse files
Options
Downloads
Patches
Plain Diff
OO-1395: fix delete of portfolio map and add unit tests
parent
bf4be58b
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
src/main/java/org/olat/portfolio/manager/EPStructureManager.java
+8
-14
8 additions, 14 deletions
...n/java/org/olat/portfolio/manager/EPStructureManager.java
src/test/java/org/olat/portfolio/EPFrontendManagerTest.java
+126
-0
126 additions, 0 deletions
src/test/java/org/olat/portfolio/EPFrontendManagerTest.java
with
134 additions
and
14 deletions
src/main/java/org/olat/portfolio/manager/EPStructureManager.java
+
8
−
14
View file @
7a54f983
...
...
@@ -41,7 +41,6 @@ import org.olat.basesecurity.SecurityGroupMembershipImpl;
import
org.olat.basesecurity.manager.GroupDAO
;
import
org.olat.core.CoreSpringFactory
;
import
org.olat.core.commons.persistence.DB
;
import
org.olat.core.commons.persistence.DBFactory
;
import
org.olat.core.commons.persistence.DBQuery
;
import
org.olat.core.commons.persistence.PersistentObject
;
import
org.olat.core.commons.services.commentAndRating.CommentAndRatingService
;
...
...
@@ -961,19 +960,11 @@ public class EPStructureManager extends BasicManager {
if
(
map
==
null
)
{
return
;
//nothing to delete
}
if
(
map
instanceof
EPAbstractMap
)
{
//owner group has its constraints shared beetwen the repository entry and the template
((
EPAbstractMap
)
map
).
getGroups
().
clear
();
map
=
DBFactory
.
getInstance
().
getCurrentEntityManager
().
merge
(
map
);
}
removeStructureRecursively
(
map
);
dbInstance
.
commit
();
}
public
void
removeStructureRecursively
(
PortfolioStructure
struct
){
public
void
removeStructureRecursively
(
PortfolioStructure
struct
)
{
List
<
PortfolioStructure
>
children
=
loadStructureChildren
(
struct
);
for
(
PortfolioStructure
childstruct
:
children
)
{
removeStructureRecursively
(
childstruct
);
...
...
@@ -993,9 +984,8 @@ public class EPStructureManager extends BasicManager {
struct
.
getCollectRestrictions
().
clear
();
// remove sharings
if
(
struct
instanceof
EPAbstractMap
){
List
<
EPMapPolicy
>
noMorePol
=
new
ArrayList
<
EPMapPolicy
>();
policyManager
.
updateMapPolicies
((
PortfolioStructureMap
)
struct
,
noMorePol
);
if
(
struct
instanceof
EPAbstractMap
)
{
((
EPAbstractMap
)
struct
).
getGroups
().
clear
();
}
// remove comments and ratings
...
...
@@ -1015,7 +1005,11 @@ public class EPStructureManager extends BasicManager {
removeBaseGroup
((
EPAbstractMap
)
struct
);
}
resourceManager
.
deleteOLATResourceable
(
struct
);
//EPStructuredMapTemplates are linked to a repository entry
//which need the resource
if
(!(
struct
instanceof
EPStructuredMapTemplate
))
{
resourceManager
.
deleteOLATResourceable
(
struct
);
}
}
private
void
removeBaseGroup
(
EPAbstractMap
map
)
{
...
...
This diff is collapsed.
Click to expand it.
src/test/java/org/olat/portfolio/EPFrontendManagerTest.java
+
126
−
0
View file @
7a54f983
...
...
@@ -28,13 +28,16 @@ import static org.junit.Assert.assertTrue;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Locale
;
import
org.junit.Assert
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.olat.basesecurity.BaseSecurity
;
import
org.olat.basesecurity.Invitation
;
import
org.olat.core.commons.persistence.DB
;
import
org.olat.core.id.Identity
;
import
org.olat.core.id.Roles
;
import
org.olat.portfolio.manager.EPFrontendManager
;
import
org.olat.portfolio.manager.EPMapPolicy
;
import
org.olat.portfolio.manager.EPMapPolicy.Type
;
...
...
@@ -52,6 +55,7 @@ import org.olat.portfolio.model.structel.StructureStatusEnum;
import
org.olat.repository.RepositoryEntry
;
import
org.olat.repository.RepositoryManager
;
import
org.olat.repository.RepositoryService
;
import
org.olat.repository.handlers.RepositoryHandlerFactory
;
import
org.olat.resource.OLATResource
;
import
org.olat.resource.OLATResourceManager
;
import
org.olat.test.JunitTestHelper
;
...
...
@@ -99,6 +103,8 @@ public class EPFrontendManagerTest extends OlatTestCase {
private
RepositoryService
repositoryService
;
@Autowired
private
OLATResourceManager
resourceManager
;
@Autowired
private
RepositoryHandlerFactory
repositoryHandlerFactory
;
@Before
public
void
setUp
()
{
...
...
@@ -702,4 +708,124 @@ public class EPFrontendManagerTest extends OlatTestCase {
assertEquals
(
1
,
count2
);
assertEquals
(
1
,
count3
);
}
/**
* Create a map with a page and an artefact. Delete it.
*/
@Test
public
void
deleteMap_pageAndArtefact
()
{
Identity
id
=
JunitTestHelper
.
createAndPersistIdentityAsRndUser
(
"frtuse-4"
);
PortfolioStructureMap
map
=
epFrontendManager
.
createAndPersistPortfolioDefaultMap
(
id
,
"Delete map"
,
"Description"
);
PortfolioStructure
page
=
epFrontendManager
.
createAndPersistPortfolioPage
(
map
,
"Page while be deleted"
,
"Page description"
);
assertNotNull
(
page
);
dbInstance
.
commitAndCloseSession
();
//create artefact
AbstractArtefact
artefact
=
epFrontendManager
.
createAndPersistArtefact
(
id
,
"Forum"
);
dbInstance
.
commitAndCloseSession
();
//create the link
epFrontendManager
.
addArtefactToStructure
(
id
,
artefact
,
page
);
dbInstance
.
commitAndCloseSession
();
//reload and check
PortfolioStructure
reloadedMap
=
epFrontendManager
.
loadPortfolioStructureByKey
(
map
.
getKey
());
Assert
.
assertNotNull
(
reloadedMap
);
Assert
.
assertEquals
(
map
,
reloadedMap
);
List
<
PortfolioStructure
>
reloadedPages
=
epFrontendManager
.
loadStructureChildren
(
reloadedMap
);
Assert
.
assertNotNull
(
reloadedPages
);
Assert
.
assertEquals
(
1
,
reloadedPages
.
size
());
PortfolioStructure
reloadedPage
=
reloadedPages
.
get
(
0
);
Assert
.
assertEquals
(
page
,
reloadedPage
);
List
<
AbstractArtefact
>
reloadedArtefacts
=
epFrontendManager
.
getArtefacts
(
reloadedPage
);
Assert
.
assertNotNull
(
reloadedArtefacts
);
Assert
.
assertEquals
(
1
,
reloadedArtefacts
.
size
());
AbstractArtefact
reloadedArtefact
=
reloadedArtefacts
.
get
(
0
);
Assert
.
assertEquals
(
artefact
,
reloadedArtefact
);
dbInstance
.
commitAndCloseSession
();
//delete the map
epFrontendManager
.
deletePortfolioStructure
(
reloadedMap
);
dbInstance
.
commit
();
//what is deleted?
AbstractArtefact
notDeletedArtefact
=
epFrontendManager
.
loadArtefactByKey
(
artefact
.
getKey
());
Assert
.
assertNotNull
(
notDeletedArtefact
);
PortfolioStructure
deletedMap
=
epFrontendManager
.
loadPortfolioStructureByKey
(
map
.
getKey
());
Assert
.
assertNull
(
deletedMap
);
PortfolioStructure
deletedPage
=
epFrontendManager
.
loadPortfolioStructureByKey
(
page
.
getKey
());
Assert
.
assertNull
(
deletedPage
);
}
/**
* Delete a map with policies
*/
@Test
public
void
deleteMap_pageAndPolicy
()
{
Identity
id
=
JunitTestHelper
.
createAndPersistIdentityAsRndUser
(
"frtuse-5"
);
PortfolioStructureMap
map
=
epFrontendManager
.
createAndPersistPortfolioDefaultMap
(
id
,
"Delete map"
,
"Description"
);
PortfolioStructure
page
=
epFrontendManager
.
createAndPersistPortfolioPage
(
map
,
"Page while be deleted"
,
"Page description"
);
AbstractArtefact
artefact
=
epFrontendManager
.
createAndPersistArtefact
(
id
,
"Forum"
);
epFrontendManager
.
addArtefactToStructure
(
id
,
artefact
,
page
);
dbInstance
.
commitAndCloseSession
();
//add policy
List
<
EPMapPolicy
>
policies
=
new
ArrayList
<
EPMapPolicy
>();
EPMapPolicy
userPolicy
=
new
EPMapPolicy
();
userPolicy
.
setType
(
Type
.
user
);
userPolicy
.
getIdentities
().
add
(
ident2
);
userPolicy
.
getIdentities
().
add
(
ident3
);
policies
.
add
(
userPolicy
);
epFrontendManager
.
updateMapPolicies
(
map
,
policies
);
dbInstance
.
commitAndCloseSession
();
//reload and check
PortfolioStructure
reloadedMap
=
epFrontendManager
.
loadPortfolioStructureByKey
(
map
.
getKey
());
Assert
.
assertNotNull
(
reloadedMap
);
OLATResource
reloadedResource
=
reloadedMap
.
getOlatResource
();
Assert
.
assertNotNull
(
reloadedResource
);
Assert
.
assertEquals
(
map
,
reloadedMap
);
boolean
shared
=
epFrontendManager
.
isMapShared
(
reloadedResource
);
Assert
.
assertTrue
(
shared
);
boolean
visibleToIdent2
=
epFrontendManager
.
isMapVisible
(
ident2
,
reloadedResource
);
Assert
.
assertTrue
(
visibleToIdent2
);
//delete the map
epFrontendManager
.
deletePortfolioStructure
(
reloadedMap
);
dbInstance
.
commit
();
boolean
deletedShared
=
epFrontendManager
.
isMapShared
(
reloadedResource
);
Assert
.
assertFalse
(
deletedShared
);
boolean
deletedVisibleToIdent2
=
epFrontendManager
.
isMapVisible
(
ident2
,
reloadedResource
);
Assert
.
assertFalse
(
deletedVisibleToIdent2
);
}
/**
* Delete a portfolio template
*/
@Test
public
void
deleteMap_template
()
{
Identity
id
=
JunitTestHelper
.
createAndPersistIdentityAsRndUser
(
"frtuse-6"
);
//save parent and 20 children
OLATResource
resource
=
epStructureManager
.
createPortfolioMapTemplateResource
();
RepositoryEntry
re
=
repositoryService
.
create
(
id
,
null
,
""
,
"Template to delete"
,
""
,
resource
,
RepositoryEntry
.
ACC_OWNERS
);
PortfolioStructureMap
template
=
epStructureManager
.
createAndPersistPortfolioMapTemplateFromEntry
(
id
,
re
);
PortfolioStructure
page
=
epFrontendManager
.
createAndPersistPortfolioPage
(
template
,
"Page while be deleted"
,
"Page description"
);
dbInstance
.
commitAndCloseSession
();
//reload and check
PortfolioStructure
reloadedTemplate
=
epFrontendManager
.
loadPortfolioStructureByKey
(
template
.
getKey
());
Assert
.
assertNotNull
(
reloadedTemplate
);
OLATResource
reloadedResource
=
reloadedTemplate
.
getOlatResource
();
Assert
.
assertNotNull
(
reloadedResource
);
Assert
.
assertEquals
(
template
,
reloadedTemplate
);
List
<
PortfolioStructure
>
reloadedPages
=
epFrontendManager
.
loadStructureChildren
(
reloadedTemplate
);
Assert
.
assertNotNull
(
reloadedPages
);
Assert
.
assertEquals
(
1
,
reloadedPages
.
size
());
Assert
.
assertEquals
(
page
,
reloadedPages
.
get
(
0
));
//delete
RepositoryEntry
reloadedRe
=
repositoryService
.
loadByKey
(
re
.
getKey
());
Roles
roles
=
new
Roles
(
true
,
false
,
false
,
false
,
false
,
false
,
false
);
repositoryService
.
delete
(
reloadedRe
,
id
,
roles
,
Locale
.
GERMAN
);
dbInstance
.
commit
();
}
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment