package org.zalando.catwatch.backend.service; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.zalando.catwatch.backend.model.Language; import org.zalando.catwatch.backend.model.Project; import org.zalando.catwatch.backend.repo.ProjectRepository; import org.zalando.catwatch.backend.repo.builder.ProjectBuilder; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import static java.util.Optional.empty; import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class LanguageServiceTest { public static final Logger logger = LoggerFactory.getLogger(LanguageServiceTest.class); @Mock ProjectRepository projectRepository; @InjectMocks LanguageService languageService; /** * Checking if the language with name null is ignored */ @Test public void checkProgrammingLanguage() { logger.info("Setting up the projects..."); Project p1 = new ProjectBuilder().commitsCount(10) .contributorsCount(5) .forksCount(1) .gitHubProjectId(12345) .description("bogus project 1") .name("bogus project 1") .primaryLanguage("Java") .organizationName("zalando-stups") .getProject(); Project p2 = new ProjectBuilder().commitsCount(10) .contributorsCount(5) .forksCount(1) .gitHubProjectId(12345) .description("bogus project 2") .name("bogus project 2") .primaryLanguage("Scala") .organizationName("zalando-stups") .getProject(); Project p3 = new ProjectBuilder().commitsCount(10) .contributorsCount(5) .forksCount(1) .gitHubProjectId(12345) .description("bogus project 3") .name("bogus project 3") .primaryLanguage("C++") .organizationName("zalando") .getProject(); Project p4 = new ProjectBuilder().commitsCount(10) .contributorsCount(5) .forksCount(1) .gitHubProjectId(12345) .description("bogus project 4") .name("bogus project 4") .primaryLanguage(null) .organizationName("zalando") .getProject(); projectRepository.save(p1); projectRepository.save(p2); projectRepository.save(p3); projectRepository.save(p4); String organizations = "zalando,zalando-stups"; logger.info("Calling language service..."); List<Project> projectsZalando = new ArrayList<>(); List<Project> projectsZalandoStups = new ArrayList<>(); projectsZalandoStups.add(p1); projectsZalandoStups.add(p2); projectsZalando.add(p3); projectsZalando.add(p4); // given when(projectRepository.findProjects("zalando", empty(), empty())).thenReturn(projectsZalando); when(projectRepository.findProjects("zalando-stups", empty(), empty())).thenReturn(projectsZalandoStups); // when List<Language> result = languageService.getMainLanguages(organizations, new LanguagePercentComparator(), empty()); Assert.assertEquals(3, result.size()); } private class LanguagePercentComparator implements Comparator<Language> { @Override public int compare(final Language l1, final Language l2) { if(l1.getProjectsCount()<l2.getProjectsCount()) return 1; return -1; } } }