package uk.ac.ox.oucs.vle.email;
import org.junit.Before;
import org.junit.Test;
import uk.ac.ox.oucs.vle.CourseDepartment;
import uk.ac.ox.oucs.vle.CourseSignup;
import java.util.HashSet;
import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.*;
import static uk.ac.ox.oucs.vle.CourseSignupService.Status.APPROVED;
/**
* Created by buckett on 07/10/15.
*/
public class ApprovedEmailRuleTest extends EmailRuleBase {
private ApprovedEmailRule rule;
@Before
public void setUp() {
rule = new ApprovedEmailRule();
rule.setProxy(proxy);
rule.setService(emailSendingService);
}
@Test
public void testMatches() {
setNewStatus(APPROVED);
assertTrue(rule.matches(change));
}
@Test
public void testPerform() {
CourseSignup signup = mock(CourseSignup.class);
when(signup.getId()).thenReturn("signup-id");
change.signup = signup;
change.placement = "placement-id";
CourseDepartment department = mock(CourseDepartment.class);
when(department.getApprovers()).thenReturn(new HashSet<String>(){{
add("approver-1");
add("approver-2");
}});
change.department = department;
rule.perform(change);
// Check both approvers get an email
verify(emailSendingService).sendSignupEmail(eq("approver-1"), eq(signup), anyString(), anyString(), any(Object[].class));
verify(emailSendingService).sendSignupEmail(eq("approver-2"), eq(signup), anyString(), anyString(), any(Object[].class));
}
}