From 4994c40674c2ec9f644b709bdd31f7730790154b Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Fri, 4 Jul 2014 09:38:17 +0200 Subject: [PATCH] OO-1000: fix clean up method of invitations and add a unit test --- .../olat/portfolio/manager/InvitationDAO.java | 16 +++---- .../manager/EPPolicyManagerTest.java | 7 +--- .../portfolio/manager/InvitationDAOTest.java | 42 +++++++++++++++++++ 3 files changed, 51 insertions(+), 14 deletions(-) diff --git a/src/main/java/org/olat/portfolio/manager/InvitationDAO.java b/src/main/java/org/olat/portfolio/manager/InvitationDAO.java index 2ef57eb5e48..f7ed9178723 100644 --- a/src/main/java/org/olat/portfolio/manager/InvitationDAO.java +++ b/src/main/java/org/olat/portfolio/manager/InvitationDAO.java @@ -34,7 +34,6 @@ import org.olat.basesecurity.Group; import org.olat.basesecurity.GroupRoles; import org.olat.basesecurity.IdentityRef; import org.olat.basesecurity.Invitation; -import org.olat.basesecurity.PolicyImpl; import org.olat.basesecurity.SecurityGroup; import org.olat.basesecurity.manager.GroupDAO; import org.olat.core.commons.persistence.DB; @@ -201,14 +200,15 @@ public class InvitationDAO { StringBuilder sb = new StringBuilder(); sb.append("select invitation from ").append(InvitationImpl.class.getName()).append(" as invitation ") - .append(" inner join invitation.securityGroup secGroup ") + .append(" inner join invitation.baseGroup baseGroup ") .append(" where invitation.creationDate<:dateLimit")//someone can create an invitation but not add it to a policy within millisecond - .append(" and secGroup not in (") - //select all valid policies from this security group - .append(" select policy.securityGroup from ").append(PolicyImpl.class.getName()).append(" as policy ") - .append(" where (policy.from is null or policy.from<=:currentDate)") - .append(" and (policy.to is null or policy.to>=:currentDate)") - .append(" )"); + .append(" and not exists (") + //select all valid policies from this security group + .append(" select policy.group from structuretogroup as policy ") + .append(" where policy.group=baseGroup ") + .append(" and (policy.validFrom is null or policy.validFrom<=:currentDate)") + .append(" and (policy.validTo is null or policy.validTo>=:currentDate)") + .append(" )"); List<Invitation> oldInvitations = dbInstance.getCurrentEntityManager() .createQuery(sb.toString(), Invitation.class) diff --git a/src/test/java/org/olat/portfolio/manager/EPPolicyManagerTest.java b/src/test/java/org/olat/portfolio/manager/EPPolicyManagerTest.java index cdd7d9f9d16..ef7f9218cf3 100644 --- a/src/test/java/org/olat/portfolio/manager/EPPolicyManagerTest.java +++ b/src/test/java/org/olat/portfolio/manager/EPPolicyManagerTest.java @@ -112,9 +112,4 @@ public class EPPolicyManagerTest extends OlatTestCase { boolean visible = epFrontendManager.isMapVisible(invitee, map.getOlatResource()); Assert.assertTrue(visible); } - - - - - -} +} \ No newline at end of file diff --git a/src/test/java/org/olat/portfolio/manager/InvitationDAOTest.java b/src/test/java/org/olat/portfolio/manager/InvitationDAOTest.java index 50fd1383186..4c7aad393fd 100644 --- a/src/test/java/org/olat/portfolio/manager/InvitationDAOTest.java +++ b/src/test/java/org/olat/portfolio/manager/InvitationDAOTest.java @@ -19,13 +19,18 @@ */ package org.olat.portfolio.manager; +import java.util.Collections; import java.util.Date; +import java.util.Locale; import java.util.UUID; import org.junit.Assert; import org.junit.Test; import org.olat.basesecurity.Invitation; import org.olat.core.commons.persistence.DB; +import org.olat.core.id.Identity; +import org.olat.portfolio.model.structel.PortfolioStructureMap; +import org.olat.test.JunitTestHelper; import org.olat.test.OlatTestCase; import org.springframework.beans.factory.annotation.Autowired; @@ -43,6 +48,8 @@ public class InvitationDAOTest extends OlatTestCase { private InvitationDAO invitationDao; @Autowired private EPPolicyManager policyManager; + @Autowired + private EPFrontendManager epFrontendManager; @Test @@ -100,6 +107,41 @@ public class InvitationDAOTest extends OlatTestCase { Assert.assertEquals("kanu.unchou@frentix.com", reloadedInvitation.getMail()); } + /** + * Check the HQL code of the the method, and that it doesn't delete to much invitations + */ + @Test + public void cleanUpInvitation() { + Identity user = JunitTestHelper.createAndPersistIdentityAsRndUser("Policy-User-2-"); + PortfolioStructureMap map = epFrontendManager.createAndPersistPortfolioDefaultMap(user, "Title", "Description"); + Invitation invitation = invitationDao.createAndPersistInvitation(); + dbInstance.commit(); + + invitation.setFirstName("John"); + invitation.setLastName("Smith Portfolio"); + EPMapPolicy policy = new EPMapPolicy(); + policy.setType(EPMapPolicy.Type.invitation); + policy.setInvitation(invitation); + + policyManager.updateMapPolicies(map, Collections.singletonList(policy)); + dbInstance.commitAndCloseSession(); + + //convert invitation to identity + Identity invitee = invitationDao.createIdentityFrom(invitation, Locale.ENGLISH); + dbInstance.commitAndCloseSession(); + + //and check + boolean visible = epFrontendManager.isMapVisible(invitee, map.getOlatResource()); + Assert.assertTrue(visible); + + //clean the invitations + invitationDao.cleanUpInvitations(); + + //check that the invitation not was not deleted + boolean afterVisible = epFrontendManager.isMapVisible(invitee, map.getOlatResource()); + Assert.assertTrue(afterVisible); + } + } -- GitLab