The code now is looking like this: ``` object User...
# spek
j
The code now is looking like this:
Copy code
object UserPresenterTest : Spek({

    given("the user presenter") {

        val request = mock<Request>()
        val response = mock<Response>()
        
        given("a post action with a valid user to register") {

            afterGroup { userFactory.clear() }

            on("the attempt to register a valid user") {
                it("should have a positive match for valid user from json") {
                    val user = userFactory.build()
                    doReturn(user.toJson()).whenever(request).body()

                    <http://userPresenter.post|userPresenter.post>(request, response)
                    userPresenter.user.isValid().shouldBeTrue()
                }
            }
        }
    }

})

open class UserPresenter : UserContract {

    override fun post(request: Request, response: Response): Answer {
        user = request.bodyAsObject(User::class)
        if (userRepository.isAlreadyPersisted(user.email)) {
            return render(response, getMessage(request.locale(), "user_already_exists"), 409)
        } else if (user.isValid()) {
            user.logged = true
            userRepository.save(user)
            return render(response, user, 201)
        } else {
            return render(response, getMessage(request.locale(), "invalid_params"), 422)
        }
    }

    fun render(response: Response, message: String, status: Int): Answer {
        response.type("application/json")
        response.status(status) // This is the line number 105 referenced at the exception.
        return Answer(message, status)
    }

}