DATAMONGO-2320 - Simplify test code.

Original pull request: #776.
This commit is contained in:
Christoph Strobl
2019-08-01 14:16:24 +02:00
committed by Mark Paluch
parent 370db2dce5
commit 79f8e06fc1

View File

@@ -62,13 +62,7 @@ public class FilterExpressionUnitTests {
.and(filter("items").as("item").by(AggregationFunctionExpressions.GTE.of(Fields.field("item.price"), 100))) .and(filter("items").as("item").by(AggregationFunctionExpressions.GTE.of(Fields.field("item.price"), 100)))
.as("items")); .as("items"));
Document dbo = agg.toDocument("sales", aggregationContext); Document $filter = extractFilterOperatorFromDocument(agg.toDocument("sales", aggregationContext));
List<Object> pipeline = DocumentTestUtils.getAsDBList(dbo, "pipeline");
Document $project = DocumentTestUtils.getAsDocument((Document) pipeline.get(0), "$project");
Document items = DocumentTestUtils.getAsDocument($project, "items");
Document $filter = DocumentTestUtils.getAsDocument(items, "$filter");
Document expected = Document.parse("{" + // Document expected = Document.parse("{" + //
"input: \"$items\"," + // "input: \"$items\"," + //
"as: \"item\"," + // "as: \"item\"," + //
@@ -84,13 +78,7 @@ public class FilterExpressionUnitTests {
TypedAggregation<Sales> agg = Aggregation.newAggregation(Sales.class, Aggregation.project().and("items") TypedAggregation<Sales> agg = Aggregation.newAggregation(Sales.class, Aggregation.project().and("items")
.filter("item", AggregationFunctionExpressions.GTE.of(Fields.field("item.price"), 100)).as("items")); .filter("item", AggregationFunctionExpressions.GTE.of(Fields.field("item.price"), 100)).as("items"));
Document dbo = agg.toDocument("sales", aggregationContext); Document $filter = extractFilterOperatorFromDocument(agg.toDocument("sales", aggregationContext));
List<Object> pipeline = DocumentTestUtils.getAsDBList(dbo, "pipeline");
Document $project = DocumentTestUtils.getAsDocument((Document) pipeline.get(0), "$project");
Document items = DocumentTestUtils.getAsDocument($project, "items");
Document $filter = DocumentTestUtils.getAsDocument(items, "$filter");
Document expected = Document.parse("{" + // Document expected = Document.parse("{" + //
"input: \"$items\"," + // "input: \"$items\"," + //
"as: \"item\"," + // "as: \"item\"," + //
@@ -107,13 +95,7 @@ public class FilterExpressionUnitTests {
Aggregation.project().and(filter(Arrays.<Object> asList(1, "a", 2, null, 3.1D, 4, "5")).as("num") Aggregation.project().and(filter(Arrays.<Object> asList(1, "a", 2, null, 3.1D, 4, "5")).as("num")
.by(AggregationFunctionExpressions.GTE.of(Fields.field("num"), 3))).as("items")); .by(AggregationFunctionExpressions.GTE.of(Fields.field("num"), 3))).as("items"));
Document dbo = agg.toDocument("sales", aggregationContext); Document $filter = extractFilterOperatorFromDocument(agg.toDocument("sales", aggregationContext));
List<Object> pipeline = DocumentTestUtils.getAsDBList(dbo, "pipeline");
Document $project = DocumentTestUtils.getAsDocument((Document) pipeline.get(0), "$project");
Document items = DocumentTestUtils.getAsDocument($project, "items");
Document $filter = DocumentTestUtils.getAsDocument(items, "$filter");
Document expected = Document.parse("{" + // Document expected = Document.parse("{" + //
"input: [ 1, \"a\", 2, null, 3.1, 4, \"5\" ]," + // "input: [ 1, \"a\", 2, null, 3.1, 4, \"5\" ]," + //
"as: \"num\"," + // "as: \"num\"," + //
@@ -130,13 +112,7 @@ public class FilterExpressionUnitTests {
.and(filter("items").as("item").by(ComparisonOperators.valueOf("item.price").greaterThan("field-1"))) .and(filter("items").as("item").by(ComparisonOperators.valueOf("item.price").greaterThan("field-1")))
.as("items")); .as("items"));
Document dbo = agg.toDocument("sales", Aggregation.DEFAULT_CONTEXT); Document $filter = extractFilterOperatorFromDocument(agg.toDocument("sales", Aggregation.DEFAULT_CONTEXT));
List<Object> pipeline = DocumentTestUtils.getAsDBList(dbo, "pipeline");
Document $project = DocumentTestUtils.getAsDocument((Document) pipeline.get(0), "$project");
Document items = DocumentTestUtils.getAsDocument($project, "items");
Document $filter = DocumentTestUtils.getAsDocument(items, "$filter");
Document expected = Document.parse("{" + // Document expected = Document.parse("{" + //
"input: \"$items\"," + // "input: \"$items\"," + //
"as: \"item\"," + // "as: \"item\"," + //
@@ -146,6 +122,14 @@ public class FilterExpressionUnitTests {
assertThat($filter).isEqualTo(new Document(expected)); assertThat($filter).isEqualTo(new Document(expected));
} }
private Document extractFilterOperatorFromDocument(Document source) {
List<Object> pipeline = DocumentTestUtils.getAsDBList(source, "pipeline");
Document $project = DocumentTestUtils.getAsDocument((Document) pipeline.get(0), "$project");
Document items = DocumentTestUtils.getAsDocument($project, "items");
return DocumentTestUtils.getAsDocument(items, "$filter");
}
static class Sales { static class Sales {
List<Object> items; List<Object> items;