Nitesh Rajgopal
05/20/2022, 7:30 AMBoris
05/20/2022, 7:32 AMarrayEachLike
works. It takes a single object for a number of repetitions, not a heterogeneous set of objects.Boris
05/20/2022, 7:32 AMNitesh Rajgopal
05/20/2022, 7:33 AMBoris
05/20/2022, 7:34 AMBoris
05/20/2022, 7:35 AMBoris
05/20/2022, 7:36 AMeachLike
functions in Pact are for testing lists of objects with the same shape.Nitesh Rajgopal
05/20/2022, 7:37 AMBoris
05/20/2022, 7:46 AMBoris
05/20/2022, 7:48 AMarrayContaining
function (from v4), but that gives you a different intent profileNitesh Rajgopal
05/20/2022, 7:52 AMBoris
05/20/2022, 7:58 AMobject(...)
in each interaction.Nitesh Rajgopal
05/20/2022, 10:48 AMBoris
05/27/2022, 4:31 AMval pact = buildPact(given = "several amendments") {
uponReceiving("a request to begin reindexing amendments").run {
method("POST").path("/admin/amendments/reindex").authHeader()
}.willRespondWith().run {
status(201) jsonBody {
uuid("transactionId", ConsistentUUID)
zonedDateTime("startDate")
numberType("pending", 300)
numberType("successes", 0)
numberType("failures", 0)
numberType("total", 300)
}
}
}
val response = pact {
startAmendmentsReindex()
}
Boris
05/27/2022, 4:34 AMfun pactBuilder() = ConsumerPactBuilder
.consumer("redacted-consumer")
.hasPactWith("redacted-api")
fun buildPact(
builder: PactDslWithProvider.() -> PactDslResponse
): RequestResponsePact = pactBuilder().builder().toPact()
fun buildPact(
given: String,
builder: PactDslWithState.() -> PactDslResponse
): RequestResponsePact = pactBuilder().given(given).builder().toPact()
operator fun <R> BasePact.invoke(auth: Boolean = true, createCall: AdminClient.() -> Call<R>): R? {
println()
val result: PactVerificationResult = runConsumerTest(
this,
MockProviderConfig.createDefault(),
object : PactTestRun<Response<R>> {
override fun run(mockServer: MockServer, context: PactTestExecutionContext?): Response<R> {
val client = buildClient<AdminClient>(mockServer.getUrl(), auth)
return client.createCall().execute()
}
}
)
println("testPact result: $result")
return ((result as? Ok)?.result as? Response<R>?)?.body()
}
infix fun PactDslResponse.jsonBody(bodyBuilder: LambdaDslJsonBody.() -> Unit): PactDslResponse =
body(LambdaDsl.newJsonBody(bodyBuilder).build())
fun PactDslResponse.jsonArray(times: Int = 1, body: LambdaDslObject.() -> Unit): PactDslResponse =
body(newJsonArray { repeat(times) { newObject(body).build() } })
etc