/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.content.mail; import java.util.List; import org.junit.Before; import org.junit.Test; import org.mockito.Mockito; import com.enonic.cms.core.content.ContentEntity; import com.enonic.cms.core.mail.MailRecipient; import com.enonic.cms.core.mail.SendMailService; import com.enonic.cms.core.security.user.UserEntity; import com.enonic.cms.core.security.user.UserKey; import static org.junit.Assert.*; public class AssignmentMailSenderTest { private SendMailService sendMailService; @Before public void setUp() { sendMailService = Mockito.mock( SendMailService.class ); } @Test public void testAssignmentMailSender() throws Exception { UserEntity updater = createUser( "updater" ); UserEntity originalAssignee = createUser( "originalAssignee" ); UserEntity newAssignee = createUser( "newAssignee" ); UserEntity originalAssigner = createUser( "originalAssigner" ); AssignmentMailSender assignmentMailSender = setUpMailFactory( updater, originalAssignee, newAssignee, originalAssigner ); assignmentMailSender.sendAssignmentMails(); } @Test public void testTemplateCreators() { UserEntity updater = createUser( "updater" ); UserEntity originalAssignee = createUser( "originalAssignee" ); UserEntity newAssignee = createUser( "newAssignee" ); UserEntity originalAssigner = createUser( "originalAssigner" ); AssignmentMailSender assignmentMailSender = setUpMailFactory( updater, originalAssignee, newAssignee, originalAssigner ); AssignedContentMailTemplate assignedContentMail = assignmentMailSender.createAssignedContentMailTemplate(); assertNotNull( assignedContentMail ); List<MailRecipient> mailRecipients = assignedContentMail.getMailRecipients(); assertEquals( 1, mailRecipients.size() ); assertTrue( "New assignee should get mail", mailRecipients.contains( new MailRecipient( newAssignee ) ) ); AssignmentTakenOverMailTemplate assignmentTakenOverMail = assignmentMailSender.createAssignmentHasBeenTakenOverMailTemplate(); assertNull( "Content reassigned, no assignmentTakenOver-mail should be created", assignmentTakenOverMail ); } @Test public void testTemplateCreators_testNoOriginalAssignment() { UserEntity updater = createUser( "updater" ); UserEntity originalAssignee = null; UserEntity newAssignee = updater; UserEntity originalAssigner = null; AssignmentMailSender assignmentMailSender = setUpMailFactory( updater, originalAssignee, newAssignee, originalAssigner ); AssignmentTakenOverMailTemplate assignmentTakenOverMail = assignmentMailSender.createAssignmentHasBeenTakenOverMailTemplate(); assertNull( "Original assignment was not set, no assignmentTakenOver-mail should be created", assignmentTakenOverMail ); } @Test public void testTemplateCreators_reassigned_by_original_assignee() { UserEntity updater = createUser( "updater" ); UserEntity originalAssignee = updater; UserEntity newAssignee = createUser( "newAssignee" ); UserEntity originalAssigner = createUser( "originalAssigner" ); AssignmentMailSender assignmentMailSender = setUpMailFactory( updater, originalAssignee, newAssignee, originalAssigner ); AssignmentTakenOverMailTemplate assignmentTakenOverMail = assignmentMailSender.createAssignmentHasBeenTakenOverMailTemplate(); assertNull( "Content reassigned, no assignmentTakenOver-mail should be created", assignmentTakenOverMail ); } @Test public void testTemplateCreators_ressigned_original_assignee_and_assigner_equal() { UserEntity updater = createUser( "updater" ); UserEntity originalAssignee = createUser( "originalAssignee" ); UserEntity newAssignee = createUser( "newAssignee" ); UserEntity originalAssigner = originalAssignee; AssignmentMailSender assignmentMailSender = setUpMailFactory( updater, originalAssignee, newAssignee, originalAssigner ); AssignmentTakenOverMailTemplate assignmentTakenOverMail = assignmentMailSender.createAssignmentHasBeenTakenOverMailTemplate(); assertNull( "Content reassigned, no assignmentTakenOver-mail should be created", assignmentTakenOverMail ); } @Test public void testTemplateCreators_reassigned_by_original_assigner() { UserEntity updater = createUser( "updater" ); UserEntity originalAssignee = createUser( "originalAssignee" ); UserEntity newAssignee = createUser( "newAssignee" ); UserEntity originalAssigner = updater; AssignmentMailSender assignmentMailSender = setUpMailFactory( updater, originalAssignee, newAssignee, originalAssigner ); AssignmentTakenOverMailTemplate assignmentTakenOverMail = assignmentMailSender.createAssignmentHasBeenTakenOverMailTemplate(); assertNull( "Content reassigned, no assignmentTakenOver-mail should be created", assignmentTakenOverMail ); } @Test public void testTemplateCreators_reassigned_by_new_assignee() { UserEntity updater = createUser( "updater" ); UserEntity originalAssignee = createUser( "originalAssignee" ); UserEntity newAssignee = updater; UserEntity originalAssigner = createUser( "originalAssigner" ); AssignmentMailSender assignmentMailSender = setUpMailFactory( updater, originalAssignee, newAssignee, originalAssigner ); AssignedContentMailTemplate assignedContentMail = assignmentMailSender.createAssignedContentMailTemplate(); assertNull( assignedContentMail ); AssignmentTakenOverMailTemplate assignmentTakenOverMail = assignmentMailSender.createAssignmentHasBeenTakenOverMailTemplate(); assertNotNull( assignmentTakenOverMail ); List<MailRecipient> reassignedMailRecipients = assignmentTakenOverMail.getMailRecipients(); assertEquals( 2, reassignedMailRecipients.size() ); assertTrue( "Original assignee should get assignment taken over-mail ", reassignedMailRecipients.contains( new MailRecipient( originalAssignee ) ) ); assertTrue( "Original assigner should get assignment taken over-mail", reassignedMailRecipients.contains( new MailRecipient( originalAssigner ) ) ); } @Test public void testTemplateCreators_all_roles_updater() { UserEntity updater = createUser( "updater" ); UserEntity originalAssignee = updater; UserEntity newAssignee = updater; UserEntity originalAssigner = updater; AssignmentMailSender assignmentMailSender = setUpMailFactory( updater, originalAssignee, newAssignee, originalAssigner ); AssignedContentMailTemplate assignedContentMail = assignmentMailSender.createAssignedContentMailTemplate(); assertNull( assignedContentMail ); } private AssignmentMailSender setUpMailFactory( UserEntity updater, UserEntity originalAssignee, UserEntity newAssignee, UserEntity originalAssigner ) { AssignmentMailSender assignmentMailSender = new AssignmentMailSender( sendMailService ); assignmentMailSender.setAssignedContent( new ContentEntity() ); assignmentMailSender.setNewAssignee( newAssignee ); assignmentMailSender.setOriginalAssignee( originalAssignee ); assignmentMailSender.setOriginalAssigner( originalAssigner ); assignmentMailSender.setUpdater( updater ); return assignmentMailSender; } private UserEntity createUser( String name ) { UserEntity user = new UserEntity(); user.setKey( new UserKey( name ) ); user.setDisplayName( name ); user.setName( name ); user.setEmail( name + "@enonic.com" ); return user; } }