package com.example.serversidebbssample import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.ExtendWith import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.test.context.SpringBootTest import org.springframework.http.HttpStatus import org.springframework.http.MediaType import org.springframework.test.context.jdbc.Sql import org.springframework.test.context.junit.jupiter.SpringExtension import org.springframework.test.web.servlet.MockMvc import org.springframework.test.web.servlet.ResultMatcher import org.springframework.test.web.servlet.request.MockMvcRequestBuilders.* import org.springframework.test.web.servlet.setup.MockMvcBuilders @ExtendWith(SpringExtension::class) @SpringBootTest class PersonControllerTasks { lateinit var mockMvc: MockMvc @Autowired lateinit var target: PersonController @BeforeEach fun setup() { mockMvc = MockMvcBuilders.standaloneSetup(target).build() } @Test fun getAllPersonsTest() { val response = mockMvc.perform( get("/all") ).andReturn().response assertThat(response.status).isEqualTo(HttpStatus.OK.value()) assertThat(response.contentType).isEqualTo(MediaType.APPLICATION_JSON.toString()) } @Test fun addNewPersonTest() { val response = mockMvc.perform( post("/add").param("name", "aaa") ).andReturn().response assertThat(response.status).isEqualTo(HttpStatus.OK.value()) assertThat(response.contentAsString).isEqualTo("Saved") } // メソッドの前に実行するSQLを指定 @Test @Sql(statements = ["INSERT INTO person (name) VALUES ('update_data');"]) fun updatePersonTest() { val lastPerson: Person = target.personRepository.findAll().last() val response = mockMvc.perform( post("/update") .param("id", lastPerson.id.toString()) .param("name", "update_data") ).andReturn().response assertThat(response.status).isEqualTo(HttpStatus.OK.value()) assertThat(response.contentAsString).isEqualTo("Updated") } @Test fun deleteNoPersonTest() { var response = mockMvc.perform( post("/delete") .param("id", "-1") ).andReturn().response println(response) assertThat(response.status).isEqualTo(HttpStatus.OK.value()) assertThat(response.contentAsString).isEqualTo("No User") } }