package org.nextprot.api.core.utils.annot.merge; import org.junit.Assert; import org.junit.Test; import org.mockito.Mockito; import org.nextprot.api.commons.constants.AnnotationCategory; import org.nextprot.api.core.domain.BioObject; import org.nextprot.api.core.domain.annotation.Annotation; import java.util.Optional; public class AnnotationSimilarityPredicateTest { @Test public void newSimilarityPredicateShouldReturnNewInstanceIfDefinedCategory() throws Exception { Assert.assertTrue(AnnotationSimilarityPredicate.newSimilarityPredicate(AnnotationCategory.VARIANT).isPresent()); } @Test public void newSimilarityPredicateShouldReturnNullIfNotDefinedForCategory() throws Exception { Assert.assertTrue(!AnnotationSimilarityPredicate.newSimilarityPredicate(AnnotationCategory.ANTIBODY_MAPPING).isPresent()); } @Test public void annotationsShouldBeSimilar() throws Exception { Optional<AnnotationSimilarityPredicate> predicate = AnnotationSimilarityPredicate.newSimilarityPredicate(AnnotationCategory.BINARY_INTERACTION); Assert.assertTrue(predicate.isPresent()); Assert.assertTrue(predicate.get().isSimilar(mockAnnotation("NX_P43246", "neXtProt"), mockAnnotation("NX_P43246", "neXtProt"))); } @Test public void annotationsShouldNotBeSimilarAccessionDiffer() throws Exception { Optional<AnnotationSimilarityPredicate> predicate = AnnotationSimilarityPredicate.newSimilarityPredicate(AnnotationCategory.BINARY_INTERACTION); Assert.assertTrue(predicate.isPresent()); Assert.assertFalse(predicate.get().isSimilar(mockAnnotation("NX_P43247", "neXtProt"), mockAnnotation("NX_P43246", "neXtProt"))); } @Test public void annotationsShouldNotBeSimilarDatabaseDiffer() throws Exception { Optional<AnnotationSimilarityPredicate> predicate = AnnotationSimilarityPredicate.newSimilarityPredicate(AnnotationCategory.BINARY_INTERACTION); Assert.assertTrue(predicate.isPresent()); Assert.assertFalse(predicate.get().isSimilar(mockAnnotation("NX_P43246", "neXtProut"), mockAnnotation("NX_P43246", "neXtProt"))); } @Test public void annotationsShouldBeSimilarWithDifferentDatabaseCases() throws Exception { Optional<AnnotationSimilarityPredicate> predicate = AnnotationSimilarityPredicate.newSimilarityPredicate(AnnotationCategory.BINARY_INTERACTION); Assert.assertTrue(predicate.isPresent()); Assert.assertTrue(predicate.get().isSimilar(mockAnnotation("NX_P43246", "nextprot"), mockAnnotation("NX_P43246", "neXtProt"))); } private static Annotation mockAnnotation(String accession, String database) { Annotation annot = Mockito.mock(Annotation.class); BioObject bo = Mockito.mock(BioObject.class); Mockito.when(bo.getAccession()).thenReturn(accession); Mockito.when(bo.getDatabase()).thenReturn(database); Mockito.when(annot.getBioObject()).thenReturn(bo); return annot; } }