package org.nextprot.api.isoform.mapper.domain; import org.junit.Assert; import org.junit.Test; import org.nextprot.api.commons.constants.AnnotationCategory; import java.util.*; public class MultipleFeatureQueryTest { @Test public void testEmptyFeatureList() throws Exception { MultipleFeatureQuery query = new MultipleFeatureQuery(); Assert.assertNull(query.getAccession()); Assert.assertNull(query.getFeatureType()); Assert.assertTrue(query.getFeatureList().isEmpty()); Assert.assertTrue(query.getFeatureMaps().isEmpty()); } @Test public void getFeatureListNoAccession() throws Exception { MultipleFeatureQuery query = new MultipleFeatureQuery(); query.setFeatureList(Arrays.asList("SCN11A-p.Leu1158Pro", "SCN11A-p.Leu1158Pro")); query.setFeatureType(AnnotationCategory.VARIANT.getApiTypeName()); Assert.assertNull(query.getAccession()); Assert.assertEquals(Arrays.asList("SCN11A-p.Leu1158Pro", "SCN11A-p.Leu1158Pro"), query.getFeatureList()); Assert.assertEquals("Variant", query.getFeatureType()); } @Test public void getFeatureListWithAccession() throws Exception { MultipleFeatureQuery query = new MultipleFeatureQuery(); query.setFeatureList(Arrays.asList("SCN11A-p.Leu1158Pro", "SCN11A-p.Leu1158Pro")); query.setFeatureType(AnnotationCategory.VARIANT.getApiTypeName()); query.setAccession("NX_Q9UI33"); Assert.assertEquals("NX_Q9UI33", query.getAccession()); Assert.assertEquals(Arrays.asList("SCN11A-p.Leu1158Pro", "SCN11A-p.Leu1158Pro"), query.getFeatureList()); Assert.assertEquals("Variant", query.getFeatureType()); } @Test public void getFeatureMapList() throws Exception { MultipleFeatureQuery query = new MultipleFeatureQuery(); List<Map<String, String>> mapList = new ArrayList<>(); mapList.add(newMap("SCN11A-p.Leu1158Pro", "NX_Q9UI33")); query.setFeatureMaps(mapList); query.setFeatureType(AnnotationCategory.VARIANT.getApiTypeName()); Assert.assertEquals(null, query.getAccession()); Assert.assertEquals(1, query.getFeatureMaps().size()); Assert.assertEquals("Variant", query.getFeatureType()); } private Map<String, String> newMap(String feature, String accession) { Map<String, String> map = new HashMap<>(); map.put("feature", feature); map.put("accession", accession); return map; } /* { "featureType": "variant", "featureList": [ "SCN11A-p.Leu1158Pro", "SCN11A-p.Leu1158Pro" ], "accession": "NX_Q9UI33" // feature list accession: optional if deducible from gene defined in feature } or { "featureType": "variant", "featureMaps": [ { "feature": "SCN11A-p.Leu1158Pro", "accession": "NX_Q9UI33" }, { "feature": "SCN11A-p.Leu1158Pro", "accession": "NX_Q9UI33" } ] } or both { "featureType": "variant", "featureList": [ "SCN11A-p.Leu1158Pro", "SCN11A-p.Leu1158Pro" ], "accession": "NX_Q9UI33", "featureMaps": [ { "feature": "SCN11A-p.Leu1158Pro", "accession": "NX_Q9UI33" // optional if deducible from gene defined in feature }, { "feature": "SCN11A-p.Leu1158Pro", "accession": "NX_Q9UI33" } ] } */ }