From 38c0d27b89d81eef71084c9c4fd604dbbaaf5ccf Mon Sep 17 00:00:00 2001 From: Ronald Holshausen Date: Wed, 4 Dec 2024 10:59:23 +1100 Subject: [PATCH] feat: Update LambdaDsl.newJsonArray to allow setting the number of examples --- .../com/dius/pact/consumer/dsl/LambdaDsl.java | 12 ++++++++++++ .../consumer/dsl/LambdaDslJsonArrayTest.java | 17 +++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/consumer/src/main/java/au/com/dius/pact/consumer/dsl/LambdaDsl.java b/consumer/src/main/java/au/com/dius/pact/consumer/dsl/LambdaDsl.java index 459d1313d3..9de883d501 100644 --- a/consumer/src/main/java/au/com/dius/pact/consumer/dsl/LambdaDsl.java +++ b/consumer/src/main/java/au/com/dius/pact/consumer/dsl/LambdaDsl.java @@ -24,6 +24,18 @@ public static LambdaDslJsonArray newJsonArray(Consumer array return dslArray; } + /** + * DSL function to simplify creating a {@link DslPart} generated from a {@link LambdaDslJsonArray}. + * @param examples Number of examples to populate the array with + */ + public static LambdaDslJsonArray newJsonArray(Integer examples, Consumer array) { + final PactDslJsonArray pactDslJsonArray = new PactDslJsonArray(); + pactDslJsonArray.setNumberExamples(examples); + final LambdaDslJsonArray dslArray = new LambdaDslJsonArray(pactDslJsonArray); + array.accept(dslArray); + return dslArray; + } + /** * DSL function to simplify creating a {@link DslPart} generated from a {@link LambdaDslJsonArray} where a minimum base array size is specified */ diff --git a/consumer/src/test/java/au/com/dius/pact/consumer/dsl/LambdaDslJsonArrayTest.java b/consumer/src/test/java/au/com/dius/pact/consumer/dsl/LambdaDslJsonArrayTest.java index 1fcb958ca6..919e878564 100644 --- a/consumer/src/test/java/au/com/dius/pact/consumer/dsl/LambdaDslJsonArrayTest.java +++ b/consumer/src/test/java/au/com/dius/pact/consumer/dsl/LambdaDslJsonArrayTest.java @@ -764,4 +764,21 @@ public void testUnorderedArrayMatcher() { assertThat(lambdaPactDsl.getMatchers(), is(pactDslJson.getMatchers())); } + @Test + public void arrayEachLike() { + // Old DSL + final DslPart pactDslJson = PactDslJsonArray + .arrayEachLike(2) + .stringType("name", "Berlin") + .close(); + + // Lambda DSL + final DslPart lambdaPactDsl = LambdaDsl.newJsonArray(2, array -> + array.object(obj -> + obj.stringType("name", "Berlin") + ) + ).build().close(); + + assertThat(lambdaPactDsl.getBody().toString(), is(pactDslJson.getBody().toString())); + } }