package uk.ac.ox.oucs.vle.email; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.runners.MockitoJUnitRunner; import uk.ac.ox.oucs.vle.Person; import uk.ac.ox.oucs.vle.UserProxy; import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.*; import static uk.ac.ox.oucs.vle.CourseSignupService.Status.*; /** * Created by buckett on 24/09/15. */ @RunWith(MockitoJUnitRunner.class) public class RejectedEmailRuleTest extends EmailRuleBase { private RejectedEmailRule rule; @Before public void setUp() { rule = new RejectedEmailRule(); rule.setService(emailSendingService); rule.setProxy(proxy); } @Test public void testMatchingPending() { when(signup.getStatus()).thenReturn(REJECTED); StateChange stateChange = new StateChange(PENDING, signup, null, "placementId"); assertTrue(rule.matches(stateChange)); } @Test public void testMatchingWaiting() { when(signup.getStatus()).thenReturn(REJECTED); StateChange stateChange = new StateChange(WAITING, signup, null, "placementId"); assertTrue(rule.matches(stateChange)); } @Test public void testEmailOuput() { Person studentUser = mock(Person.class); when(studentUser.getId()).thenReturn("student-user-1"); when(signup.getStatus()).thenReturn(REJECTED); when(signup.getUser()).thenReturn(studentUser); StateChange stateChange = new StateChange(WAITING, signup, null, "placementId"); UserProxy user = mock(UserProxy.class); when(user.getDisplayName()).thenReturn("Display Name"); when(proxy.getCurrentUser()).thenReturn(user); rule.perform(stateChange); verify(emailSendingService).sendStudentSignupEmail(eq(signup), anyString(), anyString(), any(Object[].class)); } }