WIP
[demos/example-siren] / spring-consumer / src / test / java / de / juplo / demos / pact / ContractTest.java
index d7358d8..0e62c48 100644 (file)
@@ -1,8 +1,7 @@
 package de.juplo.demos.pact;
 
 import au.com.dius.pact.consumer.MockServer;
-import au.com.dius.pact.consumer.dsl.PactDslJsonBody;
-import au.com.dius.pact.consumer.dsl.PactDslWithProvider;
+import au.com.dius.pact.consumer.dsl.*;
 import au.com.dius.pact.consumer.junit5.PactConsumerTestExt;
 import au.com.dius.pact.consumer.junit5.PactTestFor;
 import au.com.dius.pact.core.model.RequestResponsePact;
@@ -13,6 +12,7 @@ import org.springframework.boot.web.client.RestTemplateBuilder;
 import org.springframework.web.client.RestTemplate;
 
 import java.util.Map;
+import java.util.regex.Pattern;
 
 import static org.assertj.core.api.Assertions.fail;
 
@@ -24,13 +24,6 @@ public class ContractTest
   @Pact(consumer="SpringConsumer")
   public RequestResponsePact getOrders(PactDslWithProvider builder)
   {
-    PactDslJsonBody body = new PactDslJsonBody()
-        .stringType("name")
-        .booleanType("happy")
-        .hexValue("hexCode")
-        .id()
-        .ipAddress("localAddress")
-        .numberValue("age", 100);
     return builder
           .uponReceiving("get all orders")
             .path("/orders")
@@ -38,7 +31,18 @@ public class ContractTest
           .willRespondWith()
             .status(200)
             .headers(Map.of("Content-Type", "application/vnd.siren+json"))
-            .body(body)
+            .body(LambdaDsl.newJsonBody(body ->
+            {
+              body.arrayContaining("actions", actions ->
+              {
+                actions.object(object ->
+                {
+                  object.stringType("name","update");
+                  object.stringType("method", "PUT");
+                  object.matchUrl2("href", Matchers.regexp("\\d+", "1234"));
+                });
+              });
+            }).build())
         .toPact();
   }