package uk.ac.ox.oucs.vle.email; import org.junit.Before; import org.junit.Test; import uk.ac.ox.oucs.vle.CourseGroup; import uk.ac.ox.oucs.vle.Person; import java.util.Arrays; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.*; import static uk.ac.ox.oucs.vle.CourseSignupService.Status.PENDING; /** * Created by buckett on 07/10/15. */ public class PendingEmailRuleTest extends EmailRuleBase { private PendingEmailRule rule; @Before public void setUp() { rule = new PendingEmailRule(); rule.setProxy(proxy); rule.setService(emailSendingService); } @Test public void testMatches() throws Exception { setOldStatus(null); setNewStatus(PENDING); assertTrue(rule.matches(change)); } @Test public void testPerform() throws Exception { CourseGroup group = mock(CourseGroup.class); Person admin1 = mock(Person.class); Person admin2 = mock(Person.class); when(admin1.getId()).thenReturn("admin-1"); when(admin2.getId()).thenReturn("admin-2"); when(group.getAdministrators()).thenReturn(Arrays.asList(admin1, admin2)); when(signup.getGroup()).thenReturn(group); rule.perform(change); verify(emailSendingService).sendSignupEmail(eq("admin-1"), eq(signup), anyString(), anyString(), any(Object[].class)); verify(emailSendingService).sendSignupEmail(eq("admin-2"), eq(signup), anyString(), anyString(), any(Object[].class)); verify(emailSendingService).sendStudentSignupEmail(eq(signup), anyString(), anyString(), any(Object[].class)); } }