package org.nextprot.api.core.dao;
import org.junit.Assert;
import org.junit.Test;
import org.nextprot.api.commons.dao.MasterIdentifierDao;
import org.nextprot.api.core.domain.Publication;
import org.nextprot.api.core.domain.publication.EditedVolumeBookResourceLocator;
import org.nextprot.api.core.domain.publication.JournalResourceLocator;
import org.nextprot.api.core.domain.publication.PublicationType;
import org.nextprot.api.core.domain.publication.WebPublicationPage;
import org.nextprot.api.core.test.base.CoreUnitBaseTest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ActiveProfiles;
import java.util.List;
@ActiveProfiles({ "dev" })
public class PublicationDaoIntegrationTest extends CoreUnitBaseTest {
@Autowired PublicationDao publicationDao;
@Autowired MasterIdentifierDao masterIdentifierDao;
@Test
public void testArticlePublication() {
Publication publication = publicationDao.findPublicationById(681448L);
Assert.assertEquals(PublicationType.ARTICLE, PublicationType.valueOfName(publication.getPublicationType()));
Assert.assertTrue(publication.isLocalizableInBookMedium());
Assert.assertTrue(publication.isLocatedInScientificJournal());
Assert.assertTrue(!publication.isLocatedInEditedVolumeBook());
Assert.assertEquals("Molecular basis of fibrinogen Naples associated with defective thrombin binding and thrombophilia. Homozygous substitution of B beta 68 Ala----Thr.", publication.getTitle());
Assert.assertEquals("1992-07", publication.getTextDate());
Assert.assertTrue(publication.getPublicationResourceLocator() instanceof JournalResourceLocator);
Assert.assertEquals("The Journal of clinical investigation", publication.getPublicationLocatorName());
Assert.assertEquals("238", ((JournalResourceLocator)publication.getPublicationResourceLocator()).getFirstPage());
Assert.assertEquals("244", ((JournalResourceLocator)publication.getPublicationResourceLocator()).getLastPage());
Assert.assertEquals("90", ((JournalResourceLocator)publication.getPublicationResourceLocator()).getVolume());
Assert.assertEquals("1", ((JournalResourceLocator)publication.getPublicationResourceLocator()).getIssue());
}
@Test
public void testPubMedPublication() {
Publication publication = publicationDao.findPublicationByDatabaseAndAccession("PubMed", "25923089");
Assert.assertEquals("Correlation of hepcidin level with insulin resistance and endocrine glands function in major thalassemia.", publication.getTitle());
}
@Test
public void testBookPublication() {
Publication publication = publicationDao.findPublicationById(15642147L);
Assert.assertEquals(PublicationType.BOOK, PublicationType.valueOfName(publication.getPublicationType()));
Assert.assertTrue(publication.isLocalizableInBookMedium());
Assert.assertTrue(!publication.isLocatedInScientificJournal());
Assert.assertTrue(publication.isLocatedInEditedVolumeBook());
Assert.assertTrue(publication.getPublicationResourceLocator() instanceof EditedVolumeBookResourceLocator);
Assert.assertEquals("Plenum Press", publication.getPublisherName());
Assert.assertEquals("New York", publication.getPublisherCity());
Assert.assertEquals("Fibrinogen, thrombosis, coagulation and fibrinolysis", publication.getPublicationLocatorName());
Assert.assertEquals("39", publication.getFirstPage());
Assert.assertEquals("48", publication.getLastPage());
Assert.assertEquals("1991", publication.getTextDate());
}
@Test
public void testOnlinePublication() {
Publication publication = publicationDao.findPublicationById(3183821L);
Assert.assertEquals(PublicationType.ONLINE_PUBLICATION, PublicationType.valueOfName(publication.getPublicationType()));
Assert.assertTrue(!publication.isLocalizableInBookMedium());
Assert.assertEquals("SHMPD", publication.getPublicationResourceLocator().getName());
Assert.assertEquals("http://shmpd.bii.a-star.edu.sg/gene.php?genestart=A&genename=BRCA1", ((WebPublicationPage)publication.getPublicationResourceLocator()).getUrl());
Assert.assertEquals("The Singapore human mutation and polymorphism database", publication.getTitle());
}
@Test
public void testPublicationsByMasterId() {
Long id = masterIdentifierDao.findIdByUniqueName("NX_P02675"); // NX_P02675 -> 582546
List<Long> pubs = publicationDao.findSortedPublicationIdsByMasterId(id);
Assert.assertTrue(!pubs.isEmpty());
}
@Test
public void testMissingTitle() {
Publication publication = publicationDao.findPublicationById(3183815L);
Assert.assertTrue(!publication.hasTitle());
}
@Test
public void testMissingAuthors() {
Publication publication = publicationDao.findPublicationById(3183815L);
Assert.assertTrue(!publication.hasAuthors());
}
}