package org.opencb.opencga.storage.core.manager.variant;
import org.junit.Before;
import org.junit.Test;
import org.opencb.commons.datastore.core.Query;
import org.opencb.opencga.catalog.managers.CatalogManager;
import java.util.HashMap;
import java.util.Map;
import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.mock;
import static org.opencb.opencga.storage.core.variant.adaptors.VariantDBAdaptor.VariantQueryParams.STUDIES;
/**
* Created on 28/02/17.
*
* @author Jacobo Coll <jacobo167@gmail.com>
*/
public class VariantCatalogQueryUtilsTest {
private CatalogManager catalogManager;
private Map<String, Long> studyNameMap;
private VariantCatalogQueryUtils catalogUtils;
@Before
public void setUp() throws Exception {
studyNameMap = new HashMap<>();
addStudyId(1L);
addStudyId(2L);
addStudyId(3L);
catalogManager = mock(CatalogManager.class);
doAnswer(invocation -> studyNameMap.get(invocation.getArgument(0).toString()))
.when(catalogManager).getStudyId(anyString(), anyString());
catalogUtils = new VariantCatalogQueryUtils(catalogManager);
}
private void addStudyId(long studyId) {
studyNameMap.put(String.valueOf(studyId), studyId);
studyNameMap.put("s"+studyId, studyId);
studyNameMap.put("p1:s"+studyId, studyId);
studyNameMap.put("u@p1:s"+studyId, studyId);
}
@Test
public void parseQuery() throws Exception {
assertEquals("1", catalogUtils.parseQuery(new Query(STUDIES.key(), "s1"), "sessionId").getString(STUDIES.key()));
assertEquals("1,2", catalogUtils.parseQuery(new Query(STUDIES.key(), "s1,s2"), "sessionId").getString(STUDIES.key()));
assertEquals("!1,2", catalogUtils.parseQuery(new Query(STUDIES.key(), "!s1,2"), "sessionId").getString(STUDIES.key()));
assertEquals("2;!1;3", catalogUtils.parseQuery(new Query(STUDIES.key(), "u@p1:s2;!s1;p1:s3"), "sessionId").getString(STUDIES.key()));
}
}