Skip to content
Snippets Groups Projects
Commit b62f5aab authored by juanf's avatar juanf
Browse files

SP-935 / BIS-517 : ELN UI - Copy YeastLab iPad Search for ELN service

SVN: 30002
parent 6c389056
No related branches found
No related tags found
No related merge requests found
package ch.systemsx.cisd.openbis.generic.server.business.search.sort;
import static ch.systemsx.cisd.openbis.generic.server.business.search.sort.SearchResultSorterTestHelper.assertEntities;
import static ch.systemsx.cisd.openbis.generic.server.business.search.sort.SearchResultSorterTestHelper.createEntity;
import static ch.systemsx.cisd.openbis.generic.server.business.search.sort.SearchResultSorterTestHelper.getAnyFieldCriterion;
import static ch.systemsx.cisd.openbis.generic.server.business.search.sort.SearchResultSorterTestHelper.sort;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.testng.AssertJUnit;
import org.testng.annotations.Test;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchCriteria;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchCriterion;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchField;
import ch.systemsx.cisd.openbis.generic.server.business.search.sort.SearchResultSorterTestHelper.EntitySearchResult;
/**
* Test Class for SearchResultSorterByScore.
......@@ -22,198 +22,77 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchField;
public class SearchResultSorterByScoreTest extends AssertJUnit
{
private class EntitySearchResult implements IEntitySearchResult
{
private final String code;
private final String typeCode;
private final Map<String, String> properties;
public EntitySearchResult(
String code,
String typeCode,
Map<String, String> properties)
{
this.code = code;
this.typeCode = typeCode;
this.properties = properties;
}
public String getCode()
{
return code;
}
public String getTypeCode()
{
return typeCode;
}
public Map<String, String> getProperties()
{
return properties;
}
}
@Test
public void testCode()
public void testCriteriaAnyCode()
{
//
// Entities Setup
//
List<EntitySearchResult> entities = new ArrayList<EntitySearchResult>();
entities.add(createSample("CODE_2", "TYPE_2"));
entities.add(createSample("CODE_1", "TYPE_1"));
entities.add(createSample("CODE_3", "TYPE_3"));
entities.add(createSample("CODE", "TYPE"));
DetailedSearchCriteria criteria = new DetailedSearchCriteria();
List<DetailedSearchCriterion> criterions = new ArrayList<DetailedSearchCriterion>();
criteria.setCriteria(criterions);
entities.add(createEntity("CODE_2", "TYPE_2"));
entities.add(createEntity("CODE_1", "TYPE_1"));
entities.add(createEntity("CODE_3", "TYPE_3"));
entities.add(createEntity("CODE", "TYPE"));
// Test hit only code
criterions.add(new DetailedSearchCriterion(DetailedSearchField.createAnyField(Arrays.asList("ANY")), "CODE"));
sort(entities, getAnyFieldCriterion("CODE"));
//
// Run algorithm
//
SearchResultSorterByScore sorter = new SearchResultSorterByScore();
sorter.sort(entities, criteria);
//
// Verify results
//
assertEquals("CODE", entities.get(0).getCode());
assertEquals("CODE_1", entities.get(1).getCode());
assertEquals("CODE_2", entities.get(2).getCode());
assertEquals("CODE_3", entities.get(3).getCode());
assertEntities(entities, "CODE", "CODE_1", "CODE_2", "CODE_3");
}
@Test
public void testTypeCode()
public void testCriteriaAnyTypeCode()
{
//
// Entities Setup
//
List<EntitySearchResult> entities = new ArrayList<EntitySearchResult>();
entities.add(createSample("CODE_2", "TYPE_2"));
entities.add(createSample("CODE_1", "TYPE_1"));
entities.add(createSample("CODE_3", "TYPE_3"));
entities.add(createSample("CODE", "TYPE"));
DetailedSearchCriteria criteria = new DetailedSearchCriteria();
List<DetailedSearchCriterion> criterions = new ArrayList<DetailedSearchCriterion>();
criteria.setCriteria(criterions);
// Test hit only code
criterions.add(new DetailedSearchCriterion(DetailedSearchField.createAnyField(Arrays.asList("ANY")), "TYPE"));
entities.add(createEntity("CODE_2", "TYPE_2"));
entities.add(createEntity("CODE_1", "TYPE_1"));
entities.add(createEntity("CODE_3", "TYPE_3"));
entities.add(createEntity("CODE", "TYPE"));
//
// Run algorithm
//
SearchResultSorterByScore sorter = new SearchResultSorterByScore();
sorter.sort(entities, criteria);
// Test hit only type code
sort(entities, getAnyFieldCriterion("TYPE"));
//
// Verify results
//
assertEquals("CODE", entities.get(0).getCode());
assertEquals("CODE_1", entities.get(1).getCode());
assertEquals("CODE_2", entities.get(2).getCode());
assertEquals("CODE_3", entities.get(3).getCode());
assertEntities(entities, "CODE", "CODE_1", "CODE_2", "CODE_3");
}
@Test
public void testProperties()
public void testCriteriaAnyProperties()
{
//
// Entities Setup
//
List<EntitySearchResult> entities = new ArrayList<EntitySearchResult>();
entities.add(createSample("CODE_2", "TYPE_2", "ABC_1", "ABC_2"));
entities.add(createSample("CODE_1", "TYPE_1", "ABC_1"));
entities.add(createSample("CODE_3", "TYPE_3", "ABC_1", "ABC_2", "ABC_3"));
entities.add(createSample("CODE_4", "TYPE_4", "ABC"));
DetailedSearchCriteria criteria = new DetailedSearchCriteria();
List<DetailedSearchCriterion> criterions = new ArrayList<DetailedSearchCriterion>();
criteria.setCriteria(criterions);
entities.add(createEntity("CODE_2", "TYPE_2", "ABC_1", "ABC_2"));
entities.add(createEntity("CODE_1", "TYPE_1", "ABC_1"));
entities.add(createEntity("CODE_3", "TYPE_3", "ABC_1", "ABC_2", "ABC_3"));
entities.add(createEntity("CODE_4", "TYPE_4", "ABC"));
// Test hit only properties, partial and exact
criterions.add(new DetailedSearchCriterion(DetailedSearchField.createAnyField(Arrays.asList("ANY")), "ABC"));
//
// Run algorithm
//
SearchResultSorterByScore sorter = new SearchResultSorterByScore();
sorter.sort(entities, criteria);
sort(entities, getAnyFieldCriterion("ABC"));
//
// Verify results
//
assertEquals("CODE_4", entities.get(0).getCode());
assertEquals("CODE_3", entities.get(1).getCode());
assertEquals("CODE_2", entities.get(2).getCode());
assertEquals("CODE_1", entities.get(3).getCode());
assertEntities(entities, "CODE_4", "CODE_3", "CODE_2", "CODE_1");
}
@Test
public void testAll()
public void testCriteriaAnyAll()
{
//
// Entities Setup
//
List<EntitySearchResult> entities = new ArrayList<EntitySearchResult>();
entities.add(createSample("CODE_2", "TYPE_2", "ABC_1", "ABC_2"));
entities.add(createSample("CODE_1", "TYPE_1", "ABC_1"));
entities.add(createSample("CODE_3", "TYPE_3", "ABC_1", "ABC_2", "ABC_3"));
entities.add(createSample("CODE_4", "TYPE_4", "TYU"));
entities.add(createSample("CODE_5", "TYPE_5", "XYZ"));
entities.add(createSample("CODE_6", "TYPE_6", "666"));
DetailedSearchCriteria criteria = new DetailedSearchCriteria();
List<DetailedSearchCriterion> criterions = new ArrayList<DetailedSearchCriterion>();
// Test hit only type
criterions.add(new DetailedSearchCriterion(DetailedSearchField.createAnyField(Arrays.asList("ANY")), "TYPE_6"));
// Test hit only properties
criterions.add(new DetailedSearchCriterion(DetailedSearchField.createAnyField(Arrays.asList("ANY")), "ABC"));
// Test hit only code
criterions.add(new DetailedSearchCriterion(DetailedSearchField.createAnyField(Arrays.asList("ANY")), "CODE_4"));
// Test hit property and code
criterions.add(new DetailedSearchCriterion(DetailedSearchField.createAnyField(Arrays.asList("ANY")), "CODE_5"));
criterions.add(new DetailedSearchCriterion(DetailedSearchField.createAnyField(Arrays.asList("ANY")), "XYZ"));
criteria.setCriteria(criterions);
//
// Run algorithm
//
SearchResultSorterByScore sorter = new SearchResultSorterByScore();
sorter.sort(entities, criteria);
//
// Verify results
//
assertEquals("CODE_5", entities.get(0).getCode());
assertEquals("CODE_4", entities.get(1).getCode());
assertEquals("CODE_6", entities.get(2).getCode());
assertEquals("CODE_3", entities.get(3).getCode());
assertEquals("CODE_2", entities.get(4).getCode());
assertEquals("CODE_1", entities.get(5).getCode());
}
entities.add(createEntity("CODE_2", "TYPE_2", "ABC_1", "ABC_2"));
entities.add(createEntity("CODE_1", "TYPE_1", "ABC_1"));
entities.add(createEntity("CODE_3", "TYPE_3", "ABC_1", "ABC_2", "ABC_3"));
entities.add(createEntity("CODE_4", "TYPE_4", "TYU"));
entities.add(createEntity("CODE_5", "TYPE_5", "XYZ"));
entities.add(createEntity("CODE_6", "TYPE_6", "666"));
sort(entities,
getAnyFieldCriterion("TYPE_6"), // Test hit only type
getAnyFieldCriterion("ABC"), // Test hit only properties
getAnyFieldCriterion("CODE_4"), // Test hit only code
getAnyFieldCriterion("CODE_5"), // Test hit property and code
getAnyFieldCriterion("XYZ"));
private EntitySearchResult createSample(String code, String typeCode, String... propertyValues)
{
Map<String, String> properties = new HashMap<String, String>();
int propertyIndex = 1;
for (String propertyValue : propertyValues)
{
properties.put("PROP_" + propertyIndex, propertyValue);
propertyIndex++;
}
return new EntitySearchResult(code, typeCode, properties);
// Verify results
assertEntities(entities, "CODE_5", "CODE_4", "CODE_6", "CODE_3", "CODE_2", "CODE_1");
}
}
package ch.systemsx.cisd.openbis.generic.server.business.search.sort;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import junit.framework.Assert;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchCriteria;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchCriterion;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchField;
public class SearchResultSorterTestHelper
{
public static class EntitySearchResult implements IEntitySearchResult
{
private final String code;
private final String typeCode;
private final Map<String, String> properties;
public EntitySearchResult(
String code,
String typeCode,
Map<String, String> properties)
{
this.code = code;
this.typeCode = typeCode;
this.properties = properties;
}
public String getCode()
{
return code;
}
public String getTypeCode()
{
return typeCode;
}
public Map<String, String> getProperties()
{
return properties;
}
}
public static DetailedSearchCriterion getAnyFieldCriterion(String value)
{
return new DetailedSearchCriterion(DetailedSearchField.createAnyField(Arrays.asList("ANY")), value);
}
public static EntitySearchResult createEntity(String code, String typeCode, String... propertyValues)
{
Map<String, String> properties = new HashMap<String, String>();
int propertyIndex = 1;
for (String propertyValue : propertyValues)
{
properties.put("PROP_" + propertyIndex, propertyValue);
propertyIndex++;
}
return new EntitySearchResult(code, typeCode, properties);
}
public static void sort(List<EntitySearchResult> entities, DetailedSearchCriterion... searchCriterions)
{
DetailedSearchCriteria criteria = new DetailedSearchCriteria();
List<DetailedSearchCriterion> criterions = new ArrayList<DetailedSearchCriterion>();
criteria.setCriteria(criterions);
for (DetailedSearchCriterion searchCriterion : searchCriterions)
{
criterions.add(searchCriterion);
}
SearchResultSorterByScore sorter = new SearchResultSorterByScore();
sorter.sort(entities, criteria);
}
public static void assertEntities(List<EntitySearchResult> actualEntities, String... expectedCodes)
{
List<String> actualCodes = new ArrayList<String>();
for (EntitySearchResult actualEntity : actualEntities)
{
actualCodes.add(actualEntity.getCode());
}
Assert.assertEquals(Arrays.asList(expectedCodes), actualCodes);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment