package org.molgenis.data; import org.molgenis.data.QueryRule.Operator; import org.testng.annotations.Test; import java.util.Arrays; import java.util.List; import static com.google.common.collect.Lists.newArrayList; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import static org.molgenis.data.QueryRule.Operator.*; import static org.testng.Assert.*; public class QueryRuleTest { @Test public void equals() { QueryRule q1 = new QueryRule("field", EQUALS, "test"); QueryRule q2 = new QueryRule("field", EQUALS, "test"); assertTrue(q1.equals(q2)); } @Test public void equalsWithDifferentOperator() { QueryRule q1 = new QueryRule("field", EQUALS, "test"); QueryRule q2 = new QueryRule("field", SEARCH, "test"); assertFalse(q1.equals(q2)); } @Test public void equalsWithDifferentValues() { QueryRule q1 = new QueryRule("field", EQUALS, "test1"); QueryRule q2 = new QueryRule("field", EQUALS, "test2"); assertFalse(q1.equals(q2)); } @Test public void equalsWithDifferentFields() { QueryRule q1 = new QueryRule("field1", EQUALS, "test"); QueryRule q2 = new QueryRule("field2", EQUALS, "test"); assertFalse(q1.equals(q2)); } @Test public void valuesForRangeOperator() { QueryRule qr = new QueryRule("field", RANGE, Arrays.asList(10, 10)); assertEquals(qr.getValue(), Arrays.asList(10, 10)); } @Test public void equalsWithNestedRules() { QueryRule q = new QueryRule(); assertNotNull(q.getNestedRules()); assertTrue(q.getNestedRules().isEmpty()); QueryRule nested = new QueryRule("field", EQUALS, "Test"); q = new QueryRule(Operator.NOT, new QueryRule(nested)); assertEquals(q.getNestedRules().size(), 1); assertEquals(nested, q.getNestedRules().get(0)); } @Test public void equalsEntityId() { Entity valueEntity = mock(Entity.class); when(valueEntity.getIdValue()).thenReturn("1"); String valueId = "1"; QueryRule q1 = new QueryRule("field", EQUALS, valueEntity); QueryRule q2 = new QueryRule("field", EQUALS, valueId); assertEquals(q1, q2); } @Test public void equalsInEntity() { Entity entity1 = mock(Entity.class); Entity entity2 = mock(Entity.class); when(entity1.getIdValue()).thenReturn("1"); when(entity2.getIdValue()).thenReturn("2"); List<Entity> entities = newArrayList(entity1, entity2, entity1); List<String> ids = newArrayList("1", "2", "1"); QueryRule q1 = new QueryRule("field", IN, entities); QueryRule q2 = new QueryRule("field", IN, ids); assertEquals(q1, q2); } }