package uk.ac.ox.oucs.vle.email;
import org.junit.Before;
import org.junit.Test;
import uk.ac.ox.oucs.vle.CourseSignupService;
import uk.ac.ox.oucs.vle.Person;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.*;
/**
* Created by buckett on 02/10/15.
*/
public class AcceptedEmailRuleTest extends EmailRuleBase {
private AcceptedEmailRule rule;
@Before
public void setUp() {
rule = new AcceptedEmailRule();
rule.setService(emailSendingService);
rule.setProxy(proxy);
}
@Test
public void testMatchesPending() {
setOldStatus(CourseSignupService.Status.PENDING);
setNewStatus(CourseSignupService.Status.ACCEPTED);
assertTrue(rule.matches(change));
}
@Test
public void testMatchesWaiting() {
setOldStatus(CourseSignupService.Status.WAITING);
setNewStatus(CourseSignupService.Status.ACCEPTED);
assertTrue(rule.matches(change));
}
@Test
public void testPerform() {
Person supervisor = mock(Person.class);
when(supervisor.getId()).thenReturn("supervisor-id");
when(signup.getSupervisor()).thenReturn(supervisor);
when(signup.getId()).thenReturn("signup-id");
change.placement = "placement-id";
when(proxy.getConfirmUrl(signup.getId(), "placement-id")).thenReturn("http://server/confirm/placement-id");
when(proxy.getAdvanceUrl(signup.getId(), "approve", "placement-id")).thenReturn("http://server/approve/placement-id");
rule.perform(change);
verify(emailSendingService).sendSignupEmail(eq("supervisor-id"), eq(signup), anyString(), anyString(), any(Object[].class));
}
}