package org.zalando.catwatch.backend.util;
import org.junit.Test;
import org.zalando.catwatch.backend.model.Contributor;
import org.zalando.catwatch.backend.repo.builder.ContributorBuilder;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.zalando.catwatch.backend.repo.builder.BuilderUtil.freshId;
public class ContributorStatsTest{
@Test
public void checkContributorStats(){
// Generate a list of contributors
LinkedList<Contributor> contributors = new LinkedList<>();
String gitHub = "https://github.com/";
contributors.add(new ContributorBuilder().name("elephant").url(gitHub+"elephant").organizationId(freshId())
.organizationName("bob").snapshotDate(new Date(0))
.orgCommits(40).persCommits(30).orgProjects(20).persProjects(10).create());
contributors.add(new ContributorBuilder().name("elephant").url(gitHub+"elephant").organizationId(freshId())
.organizationName("bob").snapshotDate(new Date(1))
.orgCommits(40).persCommits(30).orgProjects(20).persProjects(10).create());
contributors.add(new ContributorBuilder().name("elephant").url(gitHub + "elephant").organizationId(freshId())
.organizationName("bob").snapshotDate(new Date(2))
.orgCommits(40).persCommits(30).orgProjects(20).persProjects(10).create());
contributors.add(new ContributorBuilder().name("snake").url(gitHub + "snake").organizationId(freshId())
.organizationName("bob").snapshotDate(new Date(0))
.orgCommits(40).persCommits(30).orgProjects(20).persProjects(10).create());
contributors.add(new ContributorBuilder().name("snake").url(gitHub + "snake").organizationId(freshId())
.organizationName("bob").snapshotDate(new Date(2))
.orgCommits(40).persCommits(30).orgProjects(20).persProjects(10).create());
contributors.add(new ContributorBuilder().name("snake").url(gitHub + "snake").organizationId(freshId())
.organizationName("bob").snapshotDate(new Date(3))
.orgCommits(40).persCommits(30).orgProjects(20).persProjects(10).create());
// Construct a ContributorStats object
List<ContributorStats> stats = ContributorStats.buildStats(contributors);
assertEquals(2, stats.size());
assertEquals("snake", stats.get(0).getName());
assertEquals("bob", stats.get(0).getOrganizationName().get(0));
assertArrayEquals(new Integer[] {40, 40, 40}, stats.get(0).getOrganizationalCommitsCounts().toArray());
assertArrayEquals(new Integer[] {30, 30, 30}, stats.get(0).getPersonalCommitsCounts().toArray());
assertArrayEquals(new Integer[] {20, 20, 20}, stats.get(0).getOrganizationalProjectsCounts().toArray());
assertArrayEquals(new Integer[] {10, 10, 10}, stats.get(0).getPersonalProjectsCounts().toArray());
stats.get(0).getSnapshotDates().toArray();
}
@Test
public void checkLoginId() {
Contributor c = new ContributorBuilder().name("elephant").organizationId(freshId())
.organizationName("bob").snapshotDate(new Date(0))
.orgCommits(40).persCommits(30).orgProjects(20).persProjects(10).create();
c.setUrl(null);
assertEquals("", c.getLoginId());
c.setUrl("notGoodStart");
assertEquals("", c.getLoginId());
c.setUrl("https://github.com/zalando");
assertEquals("zalando", c.getLoginId());
}
}