This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository faxtomail. See http://git.codelutin.com/faxtomail.git commit 460618564f13072b2926eaa37779af04b8058a2a Author: Kevin Morin <morin@codelutin.com> Date: Mon Nov 23 12:25:49 2015 +0100 fixes #7743 : Des emails se retrouvent sans groupe après groupage de mails déjà groupés --- .../services/service/EmailServiceImpl.java | 12 +++- .../services/service/EmailServiceTest.java | 82 +++++++++++++++++----- 2 files changed, 75 insertions(+), 19 deletions(-) diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java index 05c7ea5..5fc7b5a 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java @@ -994,6 +994,7 @@ public class EmailServiceImpl extends FaxToMailServiceSupport implements EmailSe @Override public Email groupEmails(String email1Id, String email2Id, FaxToMailUser user) { EmailGroupTopiaDao groupDao = getPersistenceContext().getEmailGroupDao(); + EmailTopiaDao emailDao = getPersistenceContext().getEmailDao(); Email email1 = getFullEmailById(email1Id, user); Email email2 = getFullEmailById(email2Id, user); @@ -1025,14 +1026,19 @@ public class EmailServiceImpl extends FaxToMailServiceSupport implements EmailSe // if both groups exist, merge them } else { - group1.addAllEmail(group2.getEmail()); - email2.setEmailGroup(group1); + Set<Email> group2Emails = new HashSet<>(group2.getEmail()); + + // on désassocie les emails du groupe 2 group2.clearEmail(); + + // on les associe au groupe 1 + group1.addAllEmail(group2Emails); + groupDao.delete(group2); groupDao.update(group1); + } - EmailTopiaDao emailDao = getPersistenceContext().getEmailDao(); HistoryTopiaDao historyDao = getPersistenceContext().getHistoryDao(); Date now = new Date(); diff --git a/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java b/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java index f7e0faa..9464ac4 100644 --- a/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java +++ b/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java @@ -24,31 +24,35 @@ package com.franciaflex.faxtomail.services.service; * #L% */ -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.util.Collection; -import java.util.Collections; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import org.nuiton.topia.persistence.TopiaEntities; -import org.nuiton.util.pagination.PaginationParameter; -import org.nuiton.util.pagination.PaginationResult; import com.franciaflex.faxtomail.persistence.entities.AttachmentFile; import com.franciaflex.faxtomail.persistence.entities.DemandStatus; import com.franciaflex.faxtomail.persistence.entities.Email; import com.franciaflex.faxtomail.persistence.entities.EmailFilter; +import com.franciaflex.faxtomail.persistence.entities.EmailGroup; +import com.franciaflex.faxtomail.persistence.entities.EmailTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; import com.franciaflex.faxtomail.persistence.entities.MailFolder; import com.franciaflex.faxtomail.persistence.entities.MailFolderTopiaDao; import com.franciaflex.faxtomail.persistence.entities.Range; import com.franciaflex.faxtomail.persistence.entities.SearchFilter; import com.google.common.collect.Iterables; import com.google.common.collect.Sets; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.nuiton.topia.persistence.TopiaEntities; +import org.nuiton.util.pagination.PaginationParameter; +import org.nuiton.util.pagination.PaginationResult; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; /** * Email service tests. @@ -219,7 +223,7 @@ public class EmailServiceTest extends AbstractFaxToMailServiceTest { } /** - * Test le fonctionnement de search archives qui contennait une erreur de synthax en 1.1. + * Teste le fonctionnement de search archives qui contennait une erreur de synthax en 1.1. */ @Test public void testSearchArchives() { @@ -229,6 +233,52 @@ public class EmailServiceTest extends AbstractFaxToMailServiceTest { Assert.assertFalse(emails.isEmpty()); } + /** + * Teste le groupement d'emails + */ + @Test + public void testGroupEmails() { + MailFolderTopiaDao mailFolderDao = getServiceContext().getPersistenceContext().getMailFolderDao(); + MailFolder cyrilFolder = mailFolderDao.forNameEquals("Cyril").findUnique(); + + FaxToMailUser cyril = userService.getUserByLogin("cbaillet"); + + EmailTopiaDao emailDao = getServiceContext().getPersistenceContext().getEmailDao(); + List<Email> emails = emailDao.forMailFolderEquals(cyrilFolder).addEquals(Email.PROPERTY_ARCHIVE_DATE, null).find(0, 6); + + // on groupe 2 éléments + Email email0 = emails.get(0); + Email email1 = emails.get(1); + Email groupedEmail = service.groupEmails(email0.getTopiaId(), email1.getTopiaId(), cyril); + Assert.assertEquals(2, groupedEmail.getEmailGroup().sizeEmail()); + + // on groupe un élément non groupé à un élément groupé + Email email2 = emails.get(2); + groupedEmail = service.groupEmails(email2.getTopiaId(), email0.getTopiaId(), cyril); + Assert.assertEquals(3, groupedEmail.getEmailGroup().sizeEmail()); + + // on groupe un élément groupé à un élément non groupé + Email email3 = emails.get(3); + groupedEmail = service.groupEmails(email1.getTopiaId(), email3.getTopiaId(), cyril); + Assert.assertEquals(4, groupedEmail.getEmailGroup().sizeEmail()); + + Email email4 = emails.get(4); + Email email5 = emails.get(5); + groupedEmail = service.groupEmails(email4.getTopiaId(), email5.getTopiaId(), cyril); + Assert.assertEquals(2, groupedEmail.getEmailGroup().sizeEmail()); + + // on groupe 2 éléments qui sont déjà groupés + groupedEmail = service.groupEmails(email0.getTopiaId(), email5.getTopiaId(), cyril); + Assert.assertEquals(6, groupedEmail.getEmailGroup().sizeEmail()); + + // on vérifie que l'email dont le groupe a été mergé a bien le nouveau groupe + Email email4Reloaded = service.getEmailById(email4.getTopiaId()); + EmailGroup email4ReloadedEmailGroup = email4Reloaded.getEmailGroup(); + Assert.assertEquals(groupedEmail.getEmailGroup(), email4ReloadedEmailGroup); + + + } + // @Test // public void testConvertHTMLToPdf() { // -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.