@Test public void shouldTestElementOnComplexLambdaPredicate() { // Given final Predicate<Object> predicate1 = p -> Integer.class.isAssignableFrom(p.getClass()); final Predicate<Object> predicate2 = "value"::equals; final ElementFilter filter = new ElementFilter.Builder() .select("prop1") .execute(predicate1.negate().and(predicate2)) .build(); final Entity element1 = new Entity.Builder() .property("prop1", "value") .build(); final Entity element2 = new Entity.Builder() .property("prop1", 1) .build(); // When final boolean result1 = filter.test(element1); final boolean result2 = filter.test(element2); // Then assertTrue(result1); assertFalse(result2); }
@Test public void shouldAddGlobalPreAggFiltersToGroup() { // Given final ElementFilter filter = new ElementFilter.Builder() .select(TestPropertyNames.PROP_1) .execute(new Exists()) .build(); final View view = new View.Builder() .globalEntities(new GlobalViewElementDefinition.Builder() .groups(TestGroups.ENTITY) .preAggregationFilter(filter) .build()) .entity(TestGroups.ENTITY) .build(); // When view.expandGlobalDefinitions(); // Then assertTrue(view.hasPreAggregationFilters()); assertEquals(Exists.class.getSimpleName(), view.getEntity(TestGroups.ENTITY).getPreAggregationFilter() .getComponents().get(0).getPredicate() .getClass().getSimpleName()); }
@Test public void shouldTestElementOnPredicate2WithValidationResult() { // Given final KoryphePredicate2<String, String> predicate2 = new KoryphePredicate2<String, String>() { @Override public boolean test(final String o, final String o2) { return "value".equals(o) && "value2".equals(o2); } }; final ElementFilter filter = new ElementFilter.Builder() .select("prop1", "prop2") .execute(predicate2) .build(); final Entity element1 = new Entity.Builder() .property("prop1", "value") .property("prop2", "value2") .build(); final Entity element2 = new Entity.Builder() .property("prop1", "unknown") .property("prop2", "value2") .build(); // When final ValidationResult result1 = filter.testWithValidationResult(element1); final ValidationResult result2 = filter.testWithValidationResult(element2); // Then assertTrue(result1.isValid()); assertFalse(result2.isValid()); assertTrue("Result was: " + result2.getErrorString(), result2.getErrorString().contains("{prop1: <java.lang.String>unknown, prop2: <java.lang.String>value2}")); }
@Test public void shouldAddGlobalPostAggFiltersToGroup() { // Given final ElementFilter filter = new ElementFilter.Builder() .select(TestPropertyNames.PROP_1) .execute(new Exists()) .build(); final View view = new View.Builder() .globalEntities(new GlobalViewElementDefinition.Builder() .groups(TestGroups.ENTITY) .postAggregationFilter(filter) .build()) .entity(TestGroups.ENTITY) .build(); // When view.expandGlobalDefinitions(); // Then assertTrue(view.hasPostAggregationFilters()); assertEquals(Exists.class.getSimpleName(), view.getEntity(TestGroups.ENTITY).getPostAggregationFilter() .getComponents().get(0).getPredicate() .getClass().getSimpleName()); }
@Test public void shouldTestElementOnInlinePredicate() { // Given final ElementFilter filter = new ElementFilter.Builder() .select("prop1") .execute("value"::equals) .build(); final Entity element1 = new Entity.Builder() .property("prop1", "value") .build(); final Entity element2 = new Entity.Builder() .property("prop1", "unknown") .build(); // When final boolean result1 = filter.test(element1); final boolean result2 = filter.test(element2); // Then assertTrue(result1); assertFalse(result2); }
@Test public void shouldAddGlobalPostTransformFiltersToGroup() { // Given final ElementFilter filter = new ElementFilter.Builder() .select(TestPropertyNames.PROP_1) .execute(new Exists()) .build(); final View view = new View.Builder() .globalEntities(new GlobalViewElementDefinition.Builder() .groups(TestGroups.ENTITY) .postTransformFilter(filter) .build()) .entity(TestGroups.ENTITY) .build(); // When view.expandGlobalDefinitions(); // Then assertTrue(view.hasPostTransformFilters()); assertEquals(Exists.class.getSimpleName(), view.getEntity(TestGroups.ENTITY).getPostTransformFilter() .getComponents().get(0).getPredicate() .getClass().getSimpleName()); }
@Test public void shouldReturnTrueWhenViewHasPostAggEntityFilters() { // Given final View view = new View.Builder() .entity(TestGroups.ENTITY, new ViewElementDefinition.Builder() .postAggregationFilter(new ElementFilter.Builder() .select(TestPropertyNames.PROP_1) .execute(new Exists()) .build()) .build()) .edge(TestGroups.EDGE) .edge(TestGroups.EDGE_2, null) .build(); // When final boolean result = view.hasPostAggregationFilters(); // Then assertTrue(result); }
@Test public void shouldReturnTrueWhenViewHasPreAggEdgeFilters() { // Given final View view = new View.Builder() .entity(TestGroups.ENTITY) .edge(TestGroups.EDGE, new ViewElementDefinition.Builder() .preAggregationFilter(new ElementFilter.Builder() .select(TestPropertyNames.PROP_1) .execute(new Exists()) .build()) .build()) .edge(TestGroups.EDGE_2, null) .build(); // When final boolean result = view.hasPreAggregationFilters(); // Then assertTrue(result); }
@Test public void shouldReturnTrueWhenViewHasPostTransformEdgeFilters() { // Given final View view = new View.Builder() .entity(TestGroups.ENTITY) .edge(TestGroups.EDGE, new ViewElementDefinition.Builder() .postTransformFilter(new ElementFilter.Builder() .select(TestPropertyNames.PROP_1) .execute(new Exists()) .build()) .build()) .edge(TestGroups.EDGE_2, null) .build(); // When final boolean result = view.hasPostTransformFilters(); // Then assertTrue(result); }
@Test public void shouldReturnTrueWhenViewHasPostAggEntityFilters() { // Given final View view = new View.Builder() .entity(TestGroups.ENTITY, new ViewElementDefinition.Builder() .postAggregationFilter(new ElementFilter.Builder() .select(TestPropertyNames.PROP_1) .execute(new Exists()) .build()) .build()) .edge(TestGroups.EDGE) .edge(TestGroups.EDGE_2, null) .build(); // When final boolean result = view.hasPostAggregationFilters(); // Then assertTrue(result); }
@Test public void shouldTestElementOnLambdaPredicate() { // Given final Predicate<Object> predicate = p -> null == p || String.class.isAssignableFrom(p.getClass()); final ElementFilter filter = new ElementFilter.Builder() .select("prop1") .execute(predicate) .build(); final Entity element1 = new Entity.Builder() .property("prop1", "value") .build(); final Entity element2 = new Entity.Builder() .property("prop1", 1) .build(); // When final boolean result1 = filter.test(element1); final boolean result2 = filter.test(element2); // Then assertTrue(result1); assertFalse(result2); }
@Test public void shouldReturnTrueWhenViewHasPreAggEntityFilters() { // Given final View view = new View.Builder() .entity(TestGroups.ENTITY, new ViewElementDefinition.Builder() .preAggregationFilter(new ElementFilter.Builder() .select(TestPropertyNames.PROP_1) .execute(new Exists()) .build()) .build()) .edge(TestGroups.EDGE) .edge(TestGroups.EDGE_2, null) .build(); // When final boolean result = view.hasPreAggregationFilters(); // Then assertTrue(result); }
@Test public void shouldReturnTrueWhenViewHasPostAggEdgeFilters() { // Given final View view = new View.Builder() .entity(TestGroups.ENTITY) .edge(TestGroups.EDGE, new ViewElementDefinition.Builder() .postAggregationFilter(new ElementFilter.Builder() .select(TestPropertyNames.PROP_1) .execute(new Exists()) .build()) .build()) .edge(TestGroups.EDGE_2, null) .build(); // When final boolean result = view.hasPostAggregationFilters(); // Then assertTrue(result); }
@Test public void shouldReturnTrueWhenViewHasPostAggEdgeFilters() { // Given final View view = new View.Builder() .entity(TestGroups.ENTITY) .edge(TestGroups.EDGE, new ViewElementDefinition.Builder() .postAggregationFilter(new ElementFilter.Builder() .select(TestPropertyNames.PROP_1) .execute(new Exists()) .build()) .build()) .edge(TestGroups.EDGE_2, null) .build(); // When final boolean result = view.hasPostAggregationFilters(); // Then assertTrue(result); }
@Test public void shouldReturnTrueWhenViewHasPostTransformEdgeFilters() { // Given final View view = new View.Builder() .entity(TestGroups.ENTITY) .edge(TestGroups.EDGE, new ViewElementDefinition.Builder() .postTransformFilter(new ElementFilter.Builder() .select(TestPropertyNames.PROP_1) .execute(new Exists()) .build()) .build()) .edge(TestGroups.EDGE_2, null) .build(); // When final boolean result = view.hasPostTransformFilters(); // Then assertTrue(result); }
@Test public void shouldReturnTrueWhenViewHasPostTransformEntityFilters() { // Given final View view = new View.Builder() .entity(TestGroups.ENTITY, new ViewElementDefinition.Builder() .postTransformFilter(new ElementFilter.Builder() .select(TestPropertyNames.PROP_1) .execute(new Exists()) .build()) .build()) .edge(TestGroups.EDGE) .edge(TestGroups.EDGE_2, null) .build(); // When final boolean result = view.hasPostTransformFilters(); // Then assertTrue(result); }
@Test public void shouldReturnTrueWhenViewHasPreAggEdgeFilters() { // Given final View view = new View.Builder() .entity(TestGroups.ENTITY) .edge(TestGroups.EDGE, new ViewElementDefinition.Builder() .preAggregationFilter(new ElementFilter.Builder() .select(TestPropertyNames.PROP_1) .execute(new Exists()) .build()) .build()) .edge(TestGroups.EDGE_2, null) .build(); // When final boolean result = view.hasPreAggregationFilters(); // Then assertTrue(result); }
@Test public void shouldReturnTrueWhenViewHasPostTransformEntityFilters() { // Given final View view = new View.Builder() .entity(TestGroups.ENTITY, new ViewElementDefinition.Builder() .postTransformFilter(new ElementFilter.Builder() .select(TestPropertyNames.PROP_1) .execute(new Exists()) .build()) .build()) .edge(TestGroups.EDGE) .edge(TestGroups.EDGE_2, null) .build(); // When final boolean result = view.hasPostTransformFilters(); // Then assertTrue(result); }
@Test public void shouldReturnTrueWhenViewHasPreAggEntityFilters() { // Given final View view = new View.Builder() .entity(TestGroups.ENTITY, new ViewElementDefinition.Builder() .preAggregationFilter(new ElementFilter.Builder() .select(TestPropertyNames.PROP_1) .execute(new Exists()) .build()) .build()) .edge(TestGroups.EDGE) .edge(TestGroups.EDGE_2, null) .build(); // When final boolean result = view.hasPreAggregationFilters(); // Then assertTrue(result); }