/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package uk.ac.ebi.ep.data.repositories;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.junit.After;
import org.junit.Test;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import uk.ac.ebi.ep.data.domain.UniprotEntry;
import uk.ac.ebi.ep.data.search.model.EnzymeSummary;
import uk.ac.ebi.ep.data.search.model.Species;
import uk.ac.ebi.ep.data.search.model.Taxonomy;
import uk.ac.ebi.ep.data.service.AbstractDataTest;
/**
*
* @author joseph
*/
public class UniprotEntryRepositoryImplTest extends AbstractDataTest {
@PersistenceContext
private EntityManager entityManager;
private final UniprotEntryRepositoryImpl instance = new UniprotEntryRepositoryImpl();
@After
@Override
public void tearDown() throws SQLException {
dataSource.getConnection().close();
entityManager.close();
}
/**
* Test of setEntityManager method, of class UniprotEntryRepositoryImpl.
*/
@Test
public void testSetEntityManager() {
LOGGER.info("setEntityManager");
instance.setEntityManager(entityManager);
EntityManager manager = instance.getEntityManager();
assertNotNull(manager);
}
/**
* Test of findEnzymesByNamePrefixes method, of class
* UniprotEntryRepositoryImpl.
*/
@Test
public void testFindEnzymesByNamePrefixes() {
LOGGER.info("findEnzymesByNamePrefixes");
List<String> namePrefixes = new ArrayList<>();
namePrefixes.add("CP24A");
namePrefixes.add("FAKEGENE");
namePrefixes.add("CP7B1");
int expResult = 6;
List<UniprotEntry> result = uniprotEntryRepository.findEnzymesByNamePrefixes(namePrefixes);
assertEquals(expResult, result.size());
}
/**
* Test of findEnzymesByAccessions method, of class
* UniprotEntryRepositoryImpl.
*/
@Test
public void testFindEnzymesByAccessions_List() {
LOGGER.info("findEnzymesByAccessions");
List<String> accessions = new ArrayList<>();
accessions.add("Q60991");
accessions.add("M636T8");
accessions.add("Q0III2");
accessions.add("Q64441");
accessions.add("PK5671");
accessions.add("fakeAccession");
int expResult = 2;
List<UniprotEntry> result = uniprotEntryRepository.findEnzymesByAccessions(accessions);
assertEquals(expResult, result.size());
}
/**
* Test of findEnzymeByNamePrefix method, of class
* UniprotEntryRepositoryImpl.
*/
@Test
public void testFindEnzymeByNamePrefix() {
LOGGER.info("findEnzymeByNamePrefix");
String namePrefix = "CP24A";
int expResult = 2;
List<UniprotEntry> result = uniprotEntryRepository.findEnzymeByNamePrefix(namePrefix);
assertEquals(expResult, result.size());
assertTrue(result.size() > 0);
}
/**
* Test of filterEnzymesInAccessions method, of class
* UniprotEntryRepositoryImpl.
*/
@Test
public void testFilterEnzymesInAccessions() {
LOGGER.info("filterEnzymesInAccessions");
List<String> accessions = new ArrayList<>();
accessions.add("Q60991");
accessions.add("Q63688");
accessions.add("Q0III2");
accessions.add("Q64441");
accessions.add("NotAnEnzyme");
// List<String> expResult = new LinkedList<>();
//
// expResult.add("Q0III2");
// expResult.add("Q63688");
// expResult.add("Q60991");
List<String> result = uniprotEntryRepository.filterEnzymesFromAccessions(accessions).stream().distinct().collect(Collectors.toList());
assertTrue(result.size() > 1);
}
/**
* Test of findEnzymesByAccession method, of class
* UniprotEntryRepositoryImpl.
*/
@Test
public void testFindEnzymesByAccession() {
LOGGER.info("findEnzymesByAccession");
String accession = "Q64441";
int expResult = 1;
List<UniprotEntry> result = uniprotEntryRepository.findEnzymesByAccession(accession).stream().distinct().collect(Collectors.toList());
assertEquals(expResult, result.size());
}
/**
* Test of getCountForOrganisms method, of class UniprotEntryRepositoryImpl.
*/
@Test
public void testGetCountForOrganisms() {
LOGGER.info("getCountForOrganisms");
List<Long> taxids = new ArrayList<>();
taxids.add(9606L);
taxids.add(10116L);
taxids.add(7955L);
taxids.add(9913L);
taxids.add(10090L);
int expResult = 4;
List<Taxonomy> result = uniprotEntryRepository.getCountForOrganisms(taxids);
assertEquals(expResult, result.size());
}
/**
* Test of findAccessionsByTaxId method, of class
* UniprotEntryRepositoryImpl.
*/
@Test
public void testFindAccessionsByTaxId() {
LOGGER.info("findAccessionsByTaxId");
Long taxId = 9606L;
List<String> expResult = new LinkedList<>();
expResult.add("O43462");
expResult.add("O75881");
expResult.add("Q07973");
expResult.add("P08183");
expResult.add("O76074");
List<String> result = uniprotEntryRepository.findAccessionsByTaxId(taxId);
assertEquals(expResult, result);
assertEquals(expResult.size(), result.size());
}
/**
* Test of findEnzymesByTaxId method, of class UniprotEntryRepositoryImpl.
*/
@Test
public void testFindEnzymesByTaxId() {
LOGGER.info("findEnzymesByTaxId");
Long taxId = 9606L;
int expResult = 5;
List<UniprotEntry> result = uniprotEntryRepository.findEnzymesByTaxId(taxId);
assertEquals(expResult, result.size());
}
/**
* Test of findEnzymesByAccessions method, of class
* UniprotEntryRepositoryImpl.
*/
@Test
public void testFindEnzymesByAccessions_List_Pageable() {
LOGGER.info("findEnzymesByAccessions");
List<String> accessions = new ArrayList<>();
accessions.add("Q60991");
accessions.add("Q63688");
accessions.add("Q0III2");
accessions.add("Q64441");
accessions.add("fakeAccession");
Pageable pageable = new PageRequest(0, 500, Sort.Direction.ASC, "function", "entryType");
int expResult = 4;
Page<EnzymeSummary> result = uniprotEntryRepository.findEnzymesByAccessions(accessions, pageable);
assertEquals(expResult, result.getContent().size());
assertEquals(4, result.getTotalElements());
assertEquals(1, result.getTotalPages());
}
/**
* Test of findSpeciesByTaxId method, of class UniprotEntryRepositoryImpl.
*/
@Test
public void testFindSpeciesByTaxId() {
LOGGER.info("findSpeciesByTaxId");
Long taxId = 9606L;
Species species = new Species("Homo sapiens", "Human", taxId);
List<Species> expResult = new ArrayList<>();
expResult.add(species);
List<Species> result = uniprotEntryRepository.findSpeciesByTaxId(taxId);
assertEquals(expResult, result);
assertEquals(expResult.size(), result.size());
}
/**
* Test of findSpeciesByScientificName method, of class
* UniprotEntryRepositoryImpl.
*/
@Test
public void testFindSpeciesByScientificName() {
LOGGER.info("findSpeciesByScientificName");
String sName = "Homo sapiens";
Species species = new Species("Homo sapiens", "Human", 9606L);
List<Species> expResult = new ArrayList<>();
expResult.add(species);
List<Species> result = uniprotEntryRepository.findSpeciesByScientificName(sName);
assertEquals(expResult, result);
}
/**
* Test of findEnzymesByMeshId method, of class UniprotEntryRepositoryImpl.
*/
@Test
public void testFindEnzymesByMeshId() {
LOGGER.info("findEnzymesByMeshId");
String omimId = "143880";
int expResult = 1;
List<UniprotEntry> result = uniprotEntryRepository.findEnzymesByMeshId(omimId);
assertEquals(expResult, result.size());
}
/**
* Test of findEnzymesByPathwayId method, of class
* UniprotEntryRepositoryImpl.
*/
@Test
public void testFindEnzymesByPathwayId() {
LOGGER.info("findEnzymesByPathwayId");
String pathwayId = "REACT_147797";
int expResult = 1;
List<UniprotEntry> result = uniprotEntryRepository.findEnzymesByPathwayId(pathwayId);
assertEquals(expResult, result.size());
}
}