Coverage Summary for Class: ApiClient (concept.stc.data.remote)

Class Method, % Line, %
ApiClient 100% (2/2) 100% (8/8)
ApiClient$search$1
Total 100% (2/2) 100% (8/8)


 package concept.stc.data.remote
 
 import concept.stc.config.OmdbApiProperties
 import concept.stc.data.remote.model.SearchResponse
 import kotlinx.coroutines.reactive.awaitFirst
 import org.springframework.stereotype.Component
 import org.springframework.web.reactive.function.client.WebClient
 
 /**
  * Api client for external API.
  *
  * @param properties the API config properties.
  */
 @Component
 class ApiClient(
     private val properties: OmdbApiProperties
 ) {
 
     private val webClient = WebClient.create(properties.baseUrl)
 
     /**
      * Get movies list from the external API.
      *
      * @param query the search query.
      */
     suspend fun search(query: String): SearchResponse = webClient.get()
         .uri("/?apikey={apiKey}&s={query}", properties.apiKey, query)
         .retrieve()
         .bodyToMono(SearchResponse::class.java)
         .awaitFirst()
 }