package hudson.plugins.emailext.plugins.recipients;
import hudson.model.Run;
import hudson.model.User;
import hudson.scm.ChangeLogSet;
import hudson.tasks.Mailer;
import org.hamcrest.CoreMatchers;
import org.hamcrest.collection.IsCollectionWithSize;
import org.jenkinsci.plugins.workflow.job.WorkflowRun;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import static org.junit.Assert.assertThat;
import static org.powermock.api.mockito.PowerMockito.mock;
import static org.powermock.api.mockito.PowerMockito.when;
@RunWith(PowerMockRunner.class)
@PrepareForTest({
WorkflowRun.class
})
public class RecipientProviderUtilitiesTest {
public class Debug implements RecipientProviderUtilities.IDebug {
@Override
public void send(String format, Object... args) {
}
}
public static Set<String> usersToEMails(Set<User> users) {
Set<String> emails = new HashSet<>(users.size());
for (User user : users) {
emails.add(user.getProperty(Mailer.UserProperty.class).getAddress());
}
return emails;
}
@Test
public void getChangeSetAuthors() throws Exception {
Debug debug = new Debug();
WorkflowRun run1 = mock(WorkflowRun.class);
Set<User> authors = RecipientProviderUtilities.getChangeSetAuthors(Collections.<Run<?, ?>>singleton(run1), debug);
assertThat(authors, IsCollectionWithSize.hasSize(0));
ChangeLogSet<? extends ChangeLogSet.Entry> changeSet1 = MockUtilities.makeChangeSet(run1, "A");
ChangeLogSet<? extends ChangeLogSet.Entry> changeSet2 = MockUtilities.makeChangeSet(run1, "B");
when(run1.getChangeSets()).thenReturn(Arrays.asList(changeSet1, changeSet2));
authors = RecipientProviderUtilities.getChangeSetAuthors(Collections.<Run<?, ?>>singleton(run1), debug);
assertThat(usersToEMails(authors), CoreMatchers.<Set<String>>equalTo(new HashSet<>(Arrays.asList("A@DOMAIN", "B@DOMAIN"))));
WorkflowRun run2 = mock(WorkflowRun.class);
MockUtilities.addChangeSet(run2, "C");
authors = RecipientProviderUtilities.getChangeSetAuthors(Arrays.<Run<?, ?>>asList(run1, run2), debug);
assertThat(usersToEMails(authors), CoreMatchers.<Set<String>>equalTo(new HashSet<>(Arrays.asList("A@DOMAIN", "B@DOMAIN", "C@DOMAIN"))));
}
@Test
public void getUsersTriggeringTheBuilds() throws Exception {
}
@Test
public void getUserTriggeringTheBuild() throws Exception {
}
@Test
public void addUsers() throws Exception {
}
}