/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package edu.harvard.iq.dataverse.search; import edu.harvard.iq.dataverse.DatasetFieldConstant; import java.sql.Timestamp; import java.util.Arrays; import org.apache.solr.common.SolrInputDocument; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import static org.junit.Assert.*; public class SearchUtilTest { public SearchUtilTest() { } @BeforeClass public static void setUpClass() { } @AfterClass public static void tearDownClass() { } @Before public void setUp() { SearchUtil searchUtil = new SearchUtil(); } @After public void tearDown() { } @Test public void testSanitizeQuery() { System.out.println("sanitizeQuery"); assertEquals(null, SearchUtil.sanitizeQuery(null)); assertEquals("", SearchUtil.sanitizeQuery("")); assertEquals("doi\\:10.5072/FK2/4QEJQV", SearchUtil.sanitizeQuery("doi:10.5072/FK2/4QEJQV")); assertEquals("datasetPersistentIdentifier:doi\\:10.5072/FK2/4QEJQV", SearchUtil.sanitizeQuery("datasetPersistentIdentifier:doi:10.5072/FK2/4QEJQV")); assertEquals("doi\\:4QEJQV", SearchUtil.sanitizeQuery("doi:4QEJQV")); assertEquals("hdl\\:1902.1/21919", SearchUtil.sanitizeQuery("hdl:1902.1/21919")); assertEquals("datasetPersistentIdentifier:hdl\\:1902.1/21919", SearchUtil.sanitizeQuery("datasetPersistentIdentifier:hdl:1902.1/21919")); } @Test public void testCreateSolrDoc() { assertEquals(null, SearchUtil.createSolrDoc(null)); Long datasetVersionId = 345678l; SolrInputDocument solrInputDocument = SearchUtil.createSolrDoc(new DvObjectSolrDoc("12345", "dataset_12345", datasetVersionId, "myNameOrTitleNotUsedHere", Arrays.asList(IndexServiceBean.getPublicGroupString()))); System.out.println(solrInputDocument.toString()); assertEquals(SearchFields.ID + "=" + IndexServiceBean.solrDocIdentifierDataset + "12345" + IndexServiceBean.discoverabilityPermissionSuffix, solrInputDocument.get(SearchFields.ID).toString()); assertEquals(SearchFields.DEFINITION_POINT + "=dataset_12345", solrInputDocument.get(SearchFields.DEFINITION_POINT).toString()); assertEquals(SearchFields.DEFINITION_POINT_DVOBJECT_ID + "=12345", solrInputDocument.get(SearchFields.DEFINITION_POINT_DVOBJECT_ID).toString()); assertEquals(SearchFields.DISCOVERABLE_BY + "=" + Arrays.asList(IndexServiceBean.getPublicGroupString()), solrInputDocument.get(SearchFields.DISCOVERABLE_BY).toString()); } @Test public void testGetTimestampOrNull() { assertNull(SearchUtil.getTimestampOrNull(null)); assertEquals("1970-01-12T10:20:54Z", SearchUtil.getTimestampOrNull(new Timestamp(987654321l))); } @Test public void testGetSortBy() throws Exception { SortBy sortByUnspecified = SearchUtil.getSortBy(null, null); assertEquals(SearchFields.RELEVANCE, sortByUnspecified.getField()); assertEquals(SortBy.DESCENDING, sortByUnspecified.getOrder()); SortBy sortByName = SearchUtil.getSortBy("name", null); assertEquals(SearchFields.NAME_SORT, sortByName.getField()); assertEquals(SortBy.ASCENDING, sortByName.getOrder()); SortBy sortByDate = SearchUtil.getSortBy("date", null); assertEquals(SearchFields.RELEASE_OR_CREATE_DATE, sortByDate.getField()); assertEquals(SortBy.DESCENDING, sortByDate.getOrder()); SortBy sortByAuthorName = SearchUtil.getSortBy(DatasetFieldConstant.authorName, null); assertEquals(DatasetFieldConstant.authorName, sortByAuthorName.getField()); assertEquals(SortBy.ASCENDING, sortByAuthorName.getOrder()); try { SortBy sortByExceptionExpected = SearchUtil.getSortBy(null, "unsortable"); } catch (Exception ex) { assertEquals(Exception.class, ex.getClass()); } } @Test public void testdetermineFinalQuery() { assertEquals("*", SearchUtil.determineFinalQuery(null)); assertEquals("*", SearchUtil.determineFinalQuery("")); assertEquals("foo", SearchUtil.determineFinalQuery("foo")); } }