package hudson.plugins.cigame;
import static org.mockito.Mockito.*;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
import java.util.Arrays;
import java.util.Iterator;
import hudson.model.AbstractBuild;
import hudson.model.User;
import hudson.plugins.cigame.model.ScoreCard;
import hudson.scm.ChangeLogSet;
import hudson.scm.ChangeLogSet.Entry;
import org.junit.Test;
import org.jvnet.hudson.test.Bug;
@SuppressWarnings("unchecked")
public class ScoreCardActionTest {
@Bug(3990)
@Test
public void assertCaseDifferentUserIsReportedAsOneUser() {
AbstractBuild<?, ?> build = mock(AbstractBuild.class);
ChangeLogSet changeset = mock(ChangeLogSet.class);
when(build.getChangeSet()).thenReturn(changeset);
Iterator<Entry> iterator = Arrays.asList(new Entry[]{mockEntry("Name", "OneName"), mockEntry("name", "TwoName")}).iterator();
when(changeset.iterator()).thenReturn(iterator);
assertThat(new ScoreCardAction(new ScoreCard(), build).getParticipants(false).size(), is(1));
}
@Bug(3990)
@Test
public void assertCaseDifferentUserIsNotReportedAsOneUser() {
AbstractBuild<?, ?> build = mock(AbstractBuild.class);
ChangeLogSet changeset = mock(ChangeLogSet.class);
when(build.getChangeSet()).thenReturn(changeset);
Iterator<Entry> iterator = Arrays.asList(new Entry[]{mockEntry("Name", "OneName"), mockEntry("name", "TwoName")}).iterator();
when(changeset.iterator()).thenReturn(iterator);
assertThat(new ScoreCardAction(new ScoreCard(), build).getParticipants(true).size(), is(2));
}
@Test
public void assertParticipantListIsSorted() {
AbstractBuild<?, ?> build = mock(AbstractBuild.class);
ChangeLogSet changeset = mock(ChangeLogSet.class);
when(build.getChangeSet()).thenReturn(changeset);
Iterator<Entry> iterator = Arrays.asList(new Entry[]{mockEntry("one", "David"), mockEntry("two", "Barney"), mockEntry("three", "charlie")}).iterator();
when(changeset.iterator()).thenReturn(iterator);
Iterator<User> participantsIterator = new ScoreCardAction(new ScoreCard(), build).getParticipants(true).iterator();
assertThat(participantsIterator.next().getDisplayName(), is("Barney"));
assertThat(participantsIterator.next().getDisplayName(), is("charlie"));
assertThat(participantsIterator.next().getDisplayName(), is("David"));
}
private Entry mockEntry(String id, String displayName) {
User user = mock(User.class);
when(user.getProperty(UserScoreProperty.class)).thenReturn(new UserScoreProperty(3d, true));
when(user.getDisplayName()).thenReturn(displayName);
when(user.getId()).thenReturn(id);
Entry entry = mock(Entry.class);
when(entry.getAuthor()).thenReturn(user);
return entry;
}
}