appendix C Answers to chapter exercises

 

This appendix contains the answers to the different chapter exercises found in the book.

C.1 Answers to the chapter 5 exercise

The code can be added to the consumer-mobile/app/src/test/java/com/example/ movie/MoviesApiPactTest.kt test file:

  @Pact(provider = "MoviesAPI", consumer = "MoviesAndroidApp")
  fun addMoviePact(builder: PactDslWithProvider): V4Pact {
      val requestBody: DslPart = PactDslJsonBody()
       .stringType("name")
       .integerType("year", 2004)
   val responseBody: DslPart = PactDslJsonBody()
       .integerType("id", 100)
       .stringType("name", "Shaun of the Dead")
       .integerType("year", 2004)
   return builder
       .given("movie doesn't exist")
       .uponReceiving("a request to add a movie")
       .path("/movies")
       .method("POST")
       .headers(mapOf("Content-type" to "application/json"))
       .body(requestBody)
       .willRespondWith()
       .status(200)
       .headers(mapOf("Content-type" to "application/json"))
       .body(responseBody)
       .toPact(V4Pact::class.java)
  }
  @Test
  @PactTestFor(providerName="MoviesAPI",
  pactMethod = "addMoviePact",
  providerType = ProviderType.SYNCH)
  fun `should add movie`(mockServer: MockServer) {
       var client = MovieClient(mockServer.getUrl())
    val add = Add("Shaun of the Dead", 2004)
    val response = runBlocking { client.addMovie(add)}
    assertEquals(response.name, "Shaun of the Dead")
  }

C.2 Answers to chapter 6 exercises

C.3 Answers to the chapter 7 exercise

C.4 Answers to chapter 10 exercises