package org.nextprot.api.core.utils.dbxref.conv;
import org.junit.Assert;
import org.junit.Test;
import org.nextprot.api.commons.constants.IdentifierOffset;
import org.nextprot.api.core.domain.DbXref;
import org.nextprot.api.core.utils.dbxref.resolver.XRefDatabase;
import org.nextprot.api.core.utils.dbxref.resolver.DbXrefURLResolverDelegateTest;
import java.util.Collections;
import java.util.List;
public class DbXrefConverterTest {
@Test
public void testConvert() {
DbXrefPropertyToXrefConverter converter = DbXrefConverter.getInstance();
DbXref xref = createDbXref("NP_000198.1", XRefDatabase.REF_SEQ.getName(), "http://www.ncbi.nlm.nih.gov/protein/%s", "http://www.ncbi.nlm.nih.gov/refseq/");
xref.setProperties(Collections.singletonList(createDbXrefProperty(5309676, "nucleotide sequence ID", "NM_000207.2")));
List<DbXref> xrefs = converter.convert(xref);
Assert.assertEquals(1, xrefs.size());
DbXref ref = xrefs.get(0);
Assert.assertEquals(IdentifierOffset.XREF_PROPERTY_OFFSET + 5309676L, ref.getDbXrefId().longValue());
Assert.assertEquals("NM_000207.2", ref.getAccession());
Assert.assertEquals("http://www.ncbi.nlm.nih.gov/nuccore/%s", ref.getLinkUrl());
Assert.assertEquals("http://www.ncbi.nlm.nih.gov/refseq/", ref.getUrl());
Assert.assertEquals("http://www.ncbi.nlm.nih.gov/nuccore/NM_000207.2", ref.getResolvedUrl());
Assert.assertEquals(XRefDatabase.REF_SEQ.getName(), ref.getDatabaseName());
Assert.assertEquals("Sequence databases", ref.getDatabaseCategory());
Assert.assertTrue(ref.getProperties().isEmpty());
}
@Test
public void testConvertWithUnfoundConverterProduceEmptyDbXrefList() {
DbXrefPropertyToXrefConverter converter = DbXrefConverter.getInstance();
DbXref xref = DbXrefURLResolverDelegateTest.createDbXref("NP_000198.1", XRefDatabase.JCRB.getName(), "http://www.ncbi.nlm.nih.gov/protein/%s");
Assert.assertTrue(converter.convert(xref).isEmpty());
}
@Test
public void testConvertEx1() {
DbXrefPropertyToXrefConverter converter = DbXrefConverter.getInstance();
DbXref xref = createDbXref("AAA59172.1", XRefDatabase.EMBL.getName(), "http://www.ebi.ac.uk/ena/data/view/%s", "http://www.ebi.ac.uk/ena");
xref.setProperties(Collections.singletonList(createDbXrefProperty(1724225, "genomic sequence ID", "J00265")));
List<DbXref> xrefs = converter.convert(xref);
Assert.assertEquals(1, xrefs.size());
DbXref ref = xrefs.get(0);
Assert.assertEquals(IdentifierOffset.XREF_PROPERTY_OFFSET + 1724225, ref.getDbXrefId().longValue());
Assert.assertEquals("J00265", ref.getAccession());
Assert.assertTrue(ref.getProperties().isEmpty());
Assert.assertEquals("Sequence databases", ref.getDatabaseCategory());
Assert.assertEquals(XRefDatabase.EMBL.getName(), ref.getDatabaseName());
Assert.assertEquals("http://www.ebi.ac.uk/ena/data/view/%s", ref.getLinkUrl());
Assert.assertEquals("http://www.ebi.ac.uk/ena/data/view/J00265", ref.getResolvedUrl());
Assert.assertEquals("http://www.ebi.ac.uk/ena", ref.getUrl());
}
public static DbXref createDbXref(String accession, String dbName, String linkURL, String url) {
DbXref xref = DbXrefURLResolverDelegateTest.createDbXref(accession, dbName, linkURL);
xref.setUrl(url);
return xref;
}
public static DbXref.DbXrefProperty createDbXrefProperty(long id, String name, String value) {
DbXref.DbXrefProperty prop = DbXrefURLResolverDelegateTest.createDbXrefProperty(name, value);
prop.setPropertyId(id);
return prop;
}
}