package org.nextprot.api.core.dao;
import org.junit.Test;
import org.nextprot.api.core.domain.Family;
import org.nextprot.api.core.service.FamilyService;
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;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@ActiveProfiles({ "dev" })
public class FamilyServiceIntegrationTest extends CoreUnitBaseTest {
@Autowired
private FamilyService familyService;
@Test
public void shouldReturn_2_Families_1_Family_Having_1_Parent() {
List<Family> families = familyService.findFamilies("NX_Q3SY69");
assertTrue(families.size()==2);
for (Family fam: families) {
System.out.println(fam);
assertTrue(fam.getAccession()!=null);
assertTrue(fam.getDescription()!=null);
assertTrue(fam.getName()!=null);
assertTrue(fam.getRegion()!=null); // may be null for some other entries
assertTrue(fam.getFamilyId()>0);
if (fam.getName().startsWith("GART")) { // this family has no parent
assertTrue(fam.getParent()==null);
} else if (fam.getName().startsWith("ALDH1L")) { // this family has 1 parent
assertTrue(fam.getParent()!=null);
} else {
assertTrue(false); // this should NOT occur
}
}
}
@Test
public void shouldReturn_1_Family_Having_2_Parents() {
// -- examples of entries with 1 family having 2 ancestors: NX_O14678 NX_P28288 NX_P33897
List<Family> families = familyService.findFamilies("NX_O14678");
assertTrue(families.size()==1);
Family fam = families.get(0);
System.out.println(fam);
assertTrue(fam.getParent()!=null);
System.out.println(fam.getParent());
assertTrue(fam.getParent().getParent()!=null);
System.out.println(fam.getParent().getParent());
assertTrue(fam.getParent().getParent().getParent()==null);
}
@Test
public void shouldBeSortedByRegion() {
List<Family> families = familyService.findFamilies("NX_Q3SY69");
assertEquals(2, families.size());
assertEquals("In the N-terminal section", families.get(0).getRegion());
assertEquals("In the C-terminal section", families.get(1).getRegion());
}
}