package org.nextprot.api.core.dao;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.junit.Test;
import org.nextprot.api.core.domain.MainNames;
import org.nextprot.api.core.domain.PublicationAuthor;
import org.nextprot.api.core.test.base.CoreUnitBaseTest;
import org.springframework.beans.factory.annotation.Autowired;
import com.github.springtestdbunit.annotation.DatabaseOperation;
import com.github.springtestdbunit.annotation.DatabaseSetup;
@DatabaseSetup(value = "MainNamesTest.xml", type = DatabaseOperation.INSERT)
public class MainNamesDaoTest extends CoreUnitBaseTest {
@Autowired private MainNamesDAO mainNamesDao;
@Test
public void testMapKeys() {
Map<String,MainNames> namesMap = this.mainNamesDao.getMainNamesMap();
// 3 masters + 4 isoforms = 7 entries in the map
assertEquals(7, namesMap.size());
assertTrue(namesMap.containsKey("NX_12345"));
assertTrue(namesMap.containsKey("NX_12346"));
assertTrue(namesMap.containsKey("NX_12347"));
assertTrue(namesMap.containsKey("NX_12345-1"));
assertTrue(namesMap.containsKey("NX_12345-2"));
assertTrue(namesMap.containsKey("NX_12346-1"));
assertTrue(namesMap.containsKey("NX_12347-1"));
}
@Test
public void testMapContentForMaster() {
Map<String,MainNames> namesMap = this.mainNamesDao.getMainNamesMap();
// 3 masters + 4 isoforms = 7 entries in the map
MainNames names = namesMap.get("NX_12345");
assertEquals("NX_12345", names.getAccession());
assertEquals("https://www.nextprot.org/entry/NX_12345", names.getUrl());
assertEquals("Master name 1", names.getName());
assertEquals(1, names.getGeneNameList().size());
assertEquals("GENE1", names.getGeneNameList().get(0));
}
@Test
public void testMapContentForMasterWithMulitpleGeneNames() {
Map<String,MainNames> namesMap = this.mainNamesDao.getMainNamesMap();
MainNames names = namesMap.get("NX_12347");
assertEquals(3, names.getGeneNameList().size());
assertEquals("GENE3", names.getGeneNameList().get(0));
assertEquals("GENE4", names.getGeneNameList().get(1));
assertEquals("GENE5", names.getGeneNameList().get(2));
}
@Test
public void testMapContentForIsoformShort() {
Map<String,MainNames> namesMap = this.mainNamesDao.getMainNamesMap();
MainNames names = namesMap.get("NX_12345-1");
assertEquals("NX_12345-1", names.getAccession());
assertEquals("https://www.nextprot.org/entry/NX_12345-1", names.getUrl());
assertEquals("Short", names.getName());
assertEquals(1, names.getGeneNameList().size());
assertEquals("GENE1", names.getGeneNameList().get(0));
}
@Test
public void testMapContentForIsoformLong() {
Map<String,MainNames> namesMap = this.mainNamesDao.getMainNamesMap();
MainNames names = namesMap.get("NX_12345-2");
assertEquals("NX_12345-2", names.getAccession());
assertEquals("https://www.nextprot.org/entry/NX_12345-2", names.getUrl());
assertEquals("Long", names.getName());
assertEquals(1, names.getGeneNameList().size());
assertEquals("GENE1", names.getGeneNameList().get(0));
}
@Test
public void testMapContentForIsoformWithNumericName() {
Map<String,MainNames> namesMap = this.mainNamesDao.getMainNamesMap();
MainNames names = namesMap.get("NX_12346-1");
assertEquals("Iso 1", names.getName());
}
}