package org.zalando.catwatch.backend.util;
import org.junit.Test;
import org.zalando.catwatch.backend.model.Project;
import org.zalando.catwatch.backend.repo.builder.ProjectBuilder;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
public class ProjectStatsTest {
@Test
public void checkProjectStats() {
// Generate some date. Two projects, three snapshot timeslots
LinkedList<Project> projects = new LinkedList<>();
projects.add(new ProjectBuilder().name("zoo").organizationName("bob")
.commitsCount(10).forksCount(3).contributorsCount(100).score(1)
.snapshotDate(new Date(0)).create());
projects.add(new ProjectBuilder().name("zoo").organizationName("bob")
.commitsCount(20).forksCount(4).contributorsCount(200).score(2)
.snapshotDate(new Date(1000L)).create());
projects.add(new ProjectBuilder().name("zoo").organizationName("bob")
.commitsCount(25).forksCount(5).contributorsCount(300).score(3)
.snapshotDate(new Date(2000L)).create());
projects.add(new ProjectBuilder().name("school").commitsCount(1).forksCount(1).snapshotDate(new Date(0)).create());
projects.add(new ProjectBuilder().name("school").commitsCount(3).forksCount(2).snapshotDate(new Date(1000L)).create());
projects.add(new ProjectBuilder().name("school").commitsCount(4).forksCount(3).snapshotDate(new Date(2000L)).create());
List<ProjectStats> stats = ProjectStats.buildStats(projects);
assertEquals(2, stats.size());
int zooIndex = 0;
int schoolIndex = 1;
if (!stats.get(0).getName().equals("zoo")) {
zooIndex = 1;
schoolIndex = 0;
}
ProjectStats zoo = stats.get(zooIndex);
assertEquals("zoo", zoo.getName());
assertEquals("bob", zoo.getOrganizationName());
assertArrayEquals(new Integer[] {10, 20, 25}, zoo.getCommitCounts().toArray());
assertArrayEquals(new Integer[] {3, 4, 5}, zoo.getForkCounts().toArray());
assertArrayEquals(new Integer[] {100, 200, 300}, zoo.getContributorsCounts().toArray());
assertArrayEquals(new Integer[] {1, 2, 3}, zoo.getScores().toArray());
assertArrayEquals(new Date[] {new Date(0L), new Date(1000L), new Date(2000L)}, zoo.getSnapshotDates().toArray());
ProjectStats school = stats.get(schoolIndex);
assertEquals("school", school.getName());
assertArrayEquals(new Integer[]{1, 3, 4}, school.getCommitCounts().toArray());
assertArrayEquals(new Integer[] {1, 2, 3}, school.getForkCounts().toArray());
assertArrayEquals(new Date[] {new Date(0L), new Date(1000L), new Date(2000L)}, school.getSnapshotDates().toArray());
}
}