package org.zalando.catwatch.backend.util; import org.junit.Assert; import org.springframework.web.util.UriComponentsBuilder; import org.zalando.catwatch.backend.model.Statistics; import java.util.List; public class TestUtils { public static void checkEquals(Statistics expected, Statistics actual) { checkEquals(expected, actual, true); } public static void checkEquals(Statistics expected, Statistics actual, boolean checkIds) { Assert.assertEquals("Number of contributors is different", expected.getAllContributorsCount(), actual.getAllContributorsCount()); Assert.assertEquals("Snapshot date is different", expected.getSnapshotDate().getTime(), actual.getSnapshotDate().getTime()); if(checkIds) Assert.assertEquals("ID is different", expected.getId(), actual.getId()); Assert.assertEquals("Number of contributors is different", expected.getAllForksCount(), actual.getAllForksCount()); Assert.assertEquals("Number of size is different", expected.getAllSizeCount(), actual.getAllSizeCount()); Assert.assertEquals("Number of stars is different", expected.getAllStarsCount(), actual.getAllStarsCount()); Assert.assertEquals("Number of members is different", expected.getMembersCount(), actual.getMembersCount()); Assert.assertEquals("Oranization names are different", expected.getOrganizationName(), actual.getOrganizationName()); Assert.assertEquals("Number of projects is different", expected.getPrivateProjectCount(), actual.getPrivateProjectCount()); Assert.assertEquals("Number of programming languages is different", expected.getProgramLanguagesCount(), actual.getProgramLanguagesCount()); Assert.assertEquals("Number of public projects is different", expected.getPublicProjectCount(), actual.getPublicProjectCount()); Assert.assertEquals("Number of tags is different", expected.getTagsCount(), actual.getTagsCount()); Assert.assertEquals("Number of teams is different", expected.getTeamsCount(), actual.getTeamsCount()); } public static void checkAggregatedStatistics(Statistics actual, List<Statistics> expectedstatisticsToBeAggregated) { Integer contributers = 0, externalContributors = 0, forks = 0, size = 0, stars = 0, members = 0, privateProjects = 0, languages = 0, publicProjects = 0, tags = 0, teams = 0; String organizations = null; for (Statistics s : expectedstatisticsToBeAggregated) { contributers += s.getAllContributorsCount(); externalContributors += s.getExternalContributorsCount(); forks += s.getAllForksCount(); size += s.getAllSizeCount(); stars += s.getAllStarsCount(); members += s.getMembersCount(); privateProjects += s.getPrivateProjectCount(); languages += s.getProgramLanguagesCount(); publicProjects += s.getPublicProjectCount(); tags += s.getTagsCount(); teams += s.getTeamsCount(); if (organizations == null) organizations = s.getOrganizationName(); else organizations += ", " + s.getOrganizationName(); } Assert.assertEquals(contributers, actual.getAllContributorsCount()); Assert.assertEquals(externalContributors, actual.getExternalContributorsCount()); Assert.assertEquals(forks, actual.getAllForksCount()); Assert.assertEquals(size, actual.getAllSizeCount()); Assert.assertEquals(stars, actual.getAllStarsCount()); Assert.assertEquals(members, actual.getMembersCount()); Assert.assertEquals(privateProjects, actual.getPrivateProjectCount()); Assert.assertEquals(languages, actual.getProgramLanguagesCount()); Assert.assertEquals(publicProjects, actual.getPublicProjectCount()); Assert.assertEquals(tags, actual.getTagsCount()); Assert.assertEquals(teams, actual.getTeamsCount()); for (Statistics s : expectedstatisticsToBeAggregated) { if (s.getOrganizationName() == null) continue; Assert.assertTrue("Organization " + s.getOrganizationName() + " is missing", organizations.contains(s.getOrganizationName())); } } public static String createAbsoluteStatisticsUrl (String base, String organizations, String startDate, String endDate){ String url = base + Constants.API_RESOURCE_STATISTICS; if(organizations!=null){ url+="?"+Constants.API_REQUEST_PARAM_ORGANIZATIONS+"="+organizations; } if(startDate!=null){ if(url.contains("?")){ url += "&" + Constants.API_REQUEST_PARAM_STARTDATE+"="+startDate; } else{ url += "?" + Constants.API_REQUEST_PARAM_STARTDATE+"="+startDate; } } if(endDate!=null){ if(url.contains("?")){ url += "&" + Constants.API_REQUEST_PARAM_ENDDATE+"="+endDate; } else{ url += "?" + Constants.API_REQUEST_PARAM_ENDDATE+"="+endDate; } } return url; } public static String createAbsoluteLanguagesUrl (String base, String organizations, Integer limit, Integer offset, String query){ String url = base + Constants.API_RESOURCE_LANGUAGES; UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url); if(organizations!=null) builder.queryParam(Constants.API_REQUEST_PARAM_ORGANIZATIONS, organizations); if(limit!=null) builder.queryParam(Constants.API_REQUEST_PARAM_LIMIT, limit); if(offset!=null) builder.queryParam(Constants.API_REQUEST_PARAM_OFFSET, offset); if(query!=null) builder.queryParam(Constants.API_REQUEST_PARAM_Q, query); return builder.toUriString(); } public static String createRelativeStatisticsUrl (String organizations, String startDate, String endDate){ return createAbsoluteStatisticsUrl("", organizations, startDate, endDate); } }