package hudson.plugins.cigame; import static org.mockito.Mockito.*; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; import java.util.Arrays; import java.util.List; import hudson.model.User; import hudson.plugins.cigame.LeaderBoardAction.UserScore; import org.junit.Test; public class LeaderBoardActionTest { @Test public void assertUserScoreAreRestWhenResettingScore() throws Exception { User userWithProperty = mock(User.class); User userWithoutProperty = mock(User.class); UserScoreProperty property = new UserScoreProperty(2.0, true); when(userWithProperty.getProperty(UserScoreProperty.class)).thenReturn(property); when(userWithoutProperty.getProperty(UserScoreProperty.class)).thenReturn(null); new LeaderBoardAction().doResetScores(Arrays.asList(userWithoutProperty, userWithProperty)); assertThat(property.getScore(), is(0d)); verify(userWithoutProperty).getProperty(UserScoreProperty.class); verifyNoMoreInteractions(userWithoutProperty); verify(userWithProperty).getProperty(UserScoreProperty.class); verify(userWithProperty).save(); verifyNoMoreInteractions(userWithProperty); } @Test public void assertUsernameWithDifferentCasingIsShownAsOne() throws Exception { User userOne = mock(User.class); User userTwo = mock(User.class); when(userOne.getId()).thenReturn("ID"); when(userTwo.getId()).thenReturn("id"); when(userOne.getProperty(UserScoreProperty.class)).thenReturn(new UserScoreProperty(2.0, true)); when(userTwo.getProperty(UserScoreProperty.class)).thenReturn(new UserScoreProperty(5.0, true)); List<UserScore> scores = new LeaderBoardAction().getUserScores(Arrays.asList(userOne, userTwo), false); assertThat(scores.size(), is(1)); assertThat(scores.get(0).getScore(), is(2d)); } @Test public void assertUsernameWithDifferentCasingIsShownAsTwo() throws Exception { User userOne = mock(User.class); User userTwo = mock(User.class); when(userOne.getId()).thenReturn("ID"); when(userTwo.getId()).thenReturn("id"); when(userOne.getProperty(UserScoreProperty.class)).thenReturn(new UserScoreProperty(5.0, true)); when(userTwo.getProperty(UserScoreProperty.class)).thenReturn(new UserScoreProperty(2.0, true)); List<UserScore> scores = new LeaderBoardAction().getUserScores(Arrays.asList(userOne, userTwo), true); assertThat(scores.size(), is(2)); assertThat(scores.get(0).getScore(), is(5d)); assertThat(scores.get(1).getScore(), is(2d)); } @Test public void assertScoresListIsSortedAccordingToPoints() throws Exception { User userOne = mock(User.class); User userTwo = mock(User.class); when(userOne.getId()).thenReturn("Andy"); when(userTwo.getId()).thenReturn("John"); when(userOne.getProperty(UserScoreProperty.class)).thenReturn(new UserScoreProperty(1.0, true)); when(userTwo.getProperty(UserScoreProperty.class)).thenReturn(new UserScoreProperty(2.0, true)); List<UserScore> scores = new LeaderBoardAction().getUserScores(Arrays.asList(userOne, userTwo), true); assertThat(scores.size(), is(2)); assertThat(scores.get(0).getScore(), is(2d)); assertThat(scores.get(0).getUser().getId(), is("John")); assertThat(scores.get(1).getScore(), is(1d)); assertThat(scores.get(1).getUser().getId(), is("Andy")); } }