/* * $Id$ * $URL$ */ package org.subethamail.rtest; import static org.junit.Assert.assertEquals; import java.util.List; import org.junit.Assume; import org.junit.Before; import org.subethamail.common.Utils; import org.subethamail.core.lists.i.MailSummary; import org.subethamail.rtest.util.AdminMixin; import org.subethamail.rtest.util.MailingListMixin; import org.subethamail.rtest.util.PersonMixin; import org.subethamail.rtest.util.SubEthaTestCase; /** * @author Jeff Schnitzer */ public class ThreadingTest extends SubEthaTestCase { /** */ AdminMixin admin; MailingListMixin ml; PersonMixin person1; /** * Creates a mailing list with two people subscribed. */ @Before public void setUp() throws Exception { super.setUp(); this.admin = new AdminMixin(); this.person1 = new PersonMixin(this.admin); this.ml = new MailingListMixin(this.admin, null); this.person1.getAccountMgr().subscribeMe(this.ml.getId(), this.person1.getEmail()); } /** */ @org.junit.Test public void testSubjectThreading() throws Exception { Assume.assumeTrue(ResinTestSetup.exists()); String subj1 = "foo"; String body1 = Utils.uniqueString(); byte[] rawMsg1 = this.createMessage(this.person1.getAddress(), this.ml.getAddress(), subj1, body1); this.admin.getInjector().inject(this.person1.getAddress().getAddress(), this.ml.getEmail(), rawMsg1); String subj2 = "Re: foo"; String body2 = Utils.uniqueString(); byte[] rawMsg2 = this.createMessage(this.person1.getAddress(), this.ml.getAddress(), subj2, body2); this.admin.getInjector().inject(this.person1.getAddress().getAddress(), this.ml.getEmail(), rawMsg2); List<MailSummary> threads = this.admin.getArchiver().getThreads(this.ml.getId(), 0, 100); assertEquals(1, threads.size()); MailSummary root = threads.get(0); assertEquals(subj1, root.getSubject()); assertEquals(1, root.getReplies().size()); MailSummary reply = root.getReplies().get(0); assertEquals(subj2, reply.getSubject()); // Let mail get delivered before shutting down Thread.sleep(500); } }