package {{package}}

{{#imports}}import {{import}}
{{/imports}}
import org.junit.jupiter.api.Test
{{#reactive}}
    import kotlinx.coroutines.flow.Flow
    import kotlinx.coroutines.test.runBlockingTest
{{/reactive}}
import org.springframework.http.ResponseEntity

class {{classname}}Test {

{{#serviceInterface}}
    private val service: {{classname}}Service = {{classname}}ServiceImpl()
{{/serviceInterface}}
private val api: {{classname}}Controller = {{classname}}Controller({{#serviceInterface}}service{{/serviceInterface}})
{{#operations}}
    {{#operation}}

        /**
        * To test {{classname}}Controller.{{operationId}}
        *
        * @throws ApiException
        *          if the Api call fails
        */
        @Test
        fun {{operationId}}Test() {{#reactive}}= runBlockingTest {{/reactive}}{
        {{#allParams}}
            val {{{paramName}}}: {{>optionalDataType}} = TODO()
        {{/allParams}}
        val response: ResponseEntity<{{>returnTypes}}> = api.{{operationId}}({{#allParams}}{{{paramName}}}{{^-last}}, {{/-last}}{{/allParams}})

        // TODO: test validations
        }
    {{/operation}}
{{/operations}}
}
