From c57f027dc15a2005eed9122bbaced2004eb79a1b Mon Sep 17 00:00:00 2001 From: Andrey Belousov <groundhog448@gmail.com> Date: Tue, 17 Dec 2019 22:52:59 +0000 Subject: [PATCH] Controller tests re-writed to use MockMvc --- .../controllers/CinemasApiTest.kt | 78 ------------------ .../corporate_app2/controllers/CinemasTest.kt | 81 +++++++++++++++++++ .../controllers/TicketsApiTest.kt | 71 ---------------- .../corporate_app2/controllers/TicketsTest.kt | 81 +++++++++++++++++++ .../controllers/UsersApiTest.kt | 71 ---------------- .../corporate_app2/controllers/UsersTest.kt | 81 +++++++++++++++++++ 6 files changed, 243 insertions(+), 220 deletions(-) delete mode 100644 src/test/kotlin/com/s3ai/corporate_app2/controllers/CinemasApiTest.kt create mode 100644 src/test/kotlin/com/s3ai/corporate_app2/controllers/CinemasTest.kt delete mode 100644 src/test/kotlin/com/s3ai/corporate_app2/controllers/TicketsApiTest.kt create mode 100644 src/test/kotlin/com/s3ai/corporate_app2/controllers/TicketsTest.kt delete mode 100644 src/test/kotlin/com/s3ai/corporate_app2/controllers/UsersApiTest.kt create mode 100644 src/test/kotlin/com/s3ai/corporate_app2/controllers/UsersTest.kt diff --git a/src/test/kotlin/com/s3ai/corporate_app2/controllers/CinemasApiTest.kt b/src/test/kotlin/com/s3ai/corporate_app2/controllers/CinemasApiTest.kt deleted file mode 100644 index c945828..0000000 --- a/src/test/kotlin/com/s3ai/corporate_app2/controllers/CinemasApiTest.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.s3ai.corporate_app2.controllers - -import com.s3ai.corporate_app2.Cinema -import org.assertj.core.api.Assertions.assertThat -import org.junit.jupiter.api.Test -import org.springframework.beans.factory.annotation.Autowired -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc -import org.springframework.boot.test.context.SpringBootTest -import org.springframework.test.web.servlet.MockMvc -import org.springframework.ui.ExtendedModelMap -import java.util.* - - -@SpringBootTest -@AutoConfigureMockMvc -class CinemasApiTest { - @Autowired - private lateinit var controller: CinemasController - - @Autowired - private lateinit var mvc: MockMvc - - @Test - @Throws(Exception::class) - fun contextLoads() { - assertThat(controller).isNotNull - } - - @Test - @Throws(Exception::class) - fun shouldUpdateCinema() { - val cinema = Cinema() - val id = UUID.randomUUID() - cinema.id = id - cinema.name = "test" - controller.updateCinema(cinema) - val cinemaFromBase = controller.cinemaService.findById(id) - assertThat(cinemaFromBase?.equals(cinema)) - } - - @Test - @Throws(Exception::class) - fun shouldRedirectToCreateCinemaIfIdNotExists() { - val model = ExtendedModelMap() - val redirect = controller.getCinemaEditPage(UUID.randomUUID().toString(), model) - assertThat(redirect.equals("cinemas/edit")) - assertThat(model.getValue("action") == "Create") - } - - @Test - @Throws(Exception::class) - fun shouldRedirectToEditCinemaIfIdExists() { - val cinema = Cinema() - val id = UUID.randomUUID() - cinema.id = id - cinema.name = "test" - controller.updateCinema(cinema) - val model = ExtendedModelMap() - val redirect = controller.getCinemaEditPage(id.toString(), model) - assertThat(redirect.equals("cinemas/edit")) - assertThat(model.getValue("action") == "Edit") - } - - @Test - @Throws(Exception::class) - fun shouldReturnCinemasBrowsePage() { - val cinema = Cinema() - val id = UUID.randomUUID() - cinema.id = id - cinema.name = "test" - controller.updateCinema(cinema) - val model = ExtendedModelMap() - val redirect = controller.getCinemasBrowsePage(model) - assertThat(redirect.equals("cinemas/list")) - assertThat(model.getValue("cinemas")).isNotNull - } - -} diff --git a/src/test/kotlin/com/s3ai/corporate_app2/controllers/CinemasTest.kt b/src/test/kotlin/com/s3ai/corporate_app2/controllers/CinemasTest.kt new file mode 100644 index 0000000..c2c0f71 --- /dev/null +++ b/src/test/kotlin/com/s3ai/corporate_app2/controllers/CinemasTest.kt @@ -0,0 +1,81 @@ +package com.s3ai.corporate_app2.controllers + +import com.fasterxml.jackson.databind.ObjectMapper +import com.s3ai.corporate_app2.CinemaService +import org.assertj.core.api.Assertions.assertThat +import org.hamcrest.Matchers +import org.junit.jupiter.api.Test +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc +import org.springframework.boot.test.context.SpringBootTest +import org.springframework.http.MediaType +import org.springframework.test.context.jdbc.Sql +import org.springframework.test.web.servlet.MockMvc +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders +import org.springframework.test.web.servlet.result.MockMvcResultMatchers.* +import java.util.* + + +@SpringBootTest +@AutoConfigureMockMvc +class CinemasTest { + @Autowired + private lateinit var service: CinemaService + + @Autowired + private lateinit var controller: CinemasController + + @Autowired + private lateinit var mvc: MockMvc + + @Test + @Throws(Exception::class) + fun contextLoads() { + assertThat(controller).isNotNull + } + + @Test + @Throws(Exception::class) + @Sql("/cinemasFill.sql") + fun updateCinemaTest() { + val cinema = service.findAll().random() + print(cinema.id) + + cinema.name = UUID.randomUUID().toString() + + mvc.perform(MockMvcRequestBuilders.post("/cinemas/update") + .contentType(MediaType.APPLICATION_JSON) + .content(ObjectMapper().writeValueAsString(cinema))) + .andExpect(status().isFound) + .andExpect(redirectedUrl("/cinemas/list")) + + val updatedCinema = service.findById(cinema.id!!) + assertThat(cinema == updatedCinema) + } + + @Test + @Throws(Exception::class) + fun editRedirectToCreateIfIdEmptyTest() { + mvc.perform(MockMvcRequestBuilders.get("/cinemas/edit")) + .andExpect(status().isOk) + .andExpect(model().attribute("action", Matchers.equalTo("Create"))) + } + + @Test + @Throws(Exception::class) + @Sql("/cinemasFill.sql") + fun editPageTest() { + val randomCinemaId = service.findAll().map { e -> e.id }.distinct().random() + mvc.perform(MockMvcRequestBuilders.get("/cinemas/edit?id=${randomCinemaId}")) + .andExpect(status().isOk) + .andExpect(model().attribute("action", Matchers.equalTo("Edit"))) + } + + @Test + @Throws(Exception::class) + @Sql("/cinemasFill.sql") + fun listPageTest() { + mvc.perform(MockMvcRequestBuilders.get("/cinemas/list")) + .andExpect(status().isOk) + } +} diff --git a/src/test/kotlin/com/s3ai/corporate_app2/controllers/TicketsApiTest.kt b/src/test/kotlin/com/s3ai/corporate_app2/controllers/TicketsApiTest.kt deleted file mode 100644 index 4155762..0000000 --- a/src/test/kotlin/com/s3ai/corporate_app2/controllers/TicketsApiTest.kt +++ /dev/null @@ -1,71 +0,0 @@ -package com.s3ai.corporate_app2.controllers - -import com.s3ai.corporate_app2.Ticket -import org.assertj.core.api.Assertions.assertThat -import org.junit.jupiter.api.Test -import org.springframework.beans.factory.annotation.Autowired -import org.springframework.boot.test.context.SpringBootTest -import org.springframework.ui.ExtendedModelMap -import java.util.* - - -@SpringBootTest -class TicketsApiTest { - @Autowired - private lateinit var controller: TicketsController - - @Test - @Throws(Exception::class) - fun contextLoads() { - assertThat(controller).isNotNull - } - - @Test - @Throws(Exception::class) - fun shouldUpdateTicket() { - val ticket = Ticket() - val id = UUID.randomUUID() - ticket.id = id - ticket.movie = "test" - controller.updateTicket(ticket) - val ticketFromBase = controller.ticketService.findById(id) - assertThat(ticketFromBase?.equals(ticket)) - } - - @Test - @Throws(Exception::class) - fun shouldRedirectToCreateTicketIfIdNotExists() { - val model = ExtendedModelMap() - val redirect = controller.getTicketEditPage(UUID.randomUUID().toString(), model) - assertThat(redirect.equals("tickets/edit")) - assertThat(model.getValue("action") == "Create") - } - - @Test - @Throws(Exception::class) - fun shouldRedirectToEditCinemaIfIdExists() { - val ticket = Ticket() - val id = UUID.randomUUID() - ticket.id = id - ticket.movie = "test" - controller.updateTicket(ticket) - val model = ExtendedModelMap() - val redirect = controller.getTicketEditPage(id.toString(), model) - assertThat(redirect.equals("tickets/edit")) - assertThat(model.getValue("action") == "Edit") - } - - @Test - @Throws(Exception::class) - fun shouldReturnTicketsBrowsePage() { - val ticket = Ticket() - val id = UUID.randomUUID() - ticket.id = id - ticket.movie = "test" - controller.updateTicket(ticket) - val model = ExtendedModelMap() - val redirect = controller.getTicketsBrowsePage(model) - assertThat(redirect.equals("tickets/list")) - assertThat(model.getValue("tickets")).isNotNull - } -} \ No newline at end of file diff --git a/src/test/kotlin/com/s3ai/corporate_app2/controllers/TicketsTest.kt b/src/test/kotlin/com/s3ai/corporate_app2/controllers/TicketsTest.kt new file mode 100644 index 0000000..b9a2ef6 --- /dev/null +++ b/src/test/kotlin/com/s3ai/corporate_app2/controllers/TicketsTest.kt @@ -0,0 +1,81 @@ +package com.s3ai.corporate_app2.controllers + +import com.fasterxml.jackson.databind.ObjectMapper +import com.s3ai.corporate_app2.TicketService +import org.assertj.core.api.Assertions.assertThat +import org.hamcrest.Matchers +import org.junit.jupiter.api.Test +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc +import org.springframework.boot.test.context.SpringBootTest +import org.springframework.http.MediaType +import org.springframework.test.context.jdbc.Sql +import org.springframework.test.web.servlet.MockMvc +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders +import org.springframework.test.web.servlet.result.MockMvcResultMatchers +import java.util.* + + +@SpringBootTest +@AutoConfigureMockMvc +class TicketsTest { + @Autowired + private lateinit var service: TicketService + + @Autowired + private lateinit var controller: TicketsController + + @Autowired + private lateinit var mvc: MockMvc + + @Test + @Throws(Exception::class) + fun contextLoads() { + assertThat(controller).isNotNull + } + + @Test + @Throws(Exception::class) + @Sql("/cinemasFill.sql", "/usersFill.sql", "/ticketsFill.sql") + fun updateTicketTest() { + val ticket = service.findAll().random() + print(ticket.id) + + ticket.movie = UUID.randomUUID().toString() + + mvc.perform(MockMvcRequestBuilders.post("/tickets/update") + .contentType(MediaType.APPLICATION_JSON) + .content(ObjectMapper().writeValueAsString(ticket))) + .andExpect(MockMvcResultMatchers.status().isFound) + .andExpect(MockMvcResultMatchers.redirectedUrl("/tickets/list")) + + val updatedTicket = service.findById(ticket.id!!) + assertThat(ticket == updatedTicket) + } + + @Test + @Throws(Exception::class) + fun editRedirectToCreateIfIdEmptyTest() { + mvc.perform(MockMvcRequestBuilders.get("/tickets/edit")) + .andExpect(MockMvcResultMatchers.status().isOk) + .andExpect(MockMvcResultMatchers.model().attribute("action", Matchers.equalTo("Create"))) + } + + @Test + @Throws(Exception::class) + @Sql("/cinemasFill.sql", "/usersFill.sql", "/ticketsFill.sql") + fun editPageTest() { + val randomTicketId = service.findAll().map { e -> e.id }.distinct().random() + mvc.perform(MockMvcRequestBuilders.get("/tickets/edit?id=${randomTicketId}")) + .andExpect(MockMvcResultMatchers.status().isOk) + .andExpect(MockMvcResultMatchers.model().attribute("action", Matchers.equalTo("Edit"))) + } + + @Test + @Throws(Exception::class) + @Sql("/cinemasFill.sql", "/usersFill.sql", "/ticketsFill.sql") + fun listPageTest() { + mvc.perform(MockMvcRequestBuilders.get("/tickets/list")) + .andExpect(MockMvcResultMatchers.status().isOk) + } +} \ No newline at end of file diff --git a/src/test/kotlin/com/s3ai/corporate_app2/controllers/UsersApiTest.kt b/src/test/kotlin/com/s3ai/corporate_app2/controllers/UsersApiTest.kt deleted file mode 100644 index 121ea0a..0000000 --- a/src/test/kotlin/com/s3ai/corporate_app2/controllers/UsersApiTest.kt +++ /dev/null @@ -1,71 +0,0 @@ -package com.s3ai.corporate_app2.controllers - -import com.s3ai.corporate_app2.User -import org.assertj.core.api.Assertions.assertThat -import org.junit.jupiter.api.Test -import org.springframework.beans.factory.annotation.Autowired -import org.springframework.boot.test.context.SpringBootTest -import org.springframework.ui.ExtendedModelMap -import java.util.* - - -@SpringBootTest -class UsersApiTest { - @Autowired - private lateinit var controller: UsersController - - @Test - @Throws(Exception::class) - fun contextLoads() { - assertThat(controller).isNotNull - } - - @Test - @Throws(Exception::class) - fun shouldUpdateCinema() { - val user = User() - val id = UUID.randomUUID() - user.id = id - user.name = "test" - controller.updateUser(user) - val userFromBase = controller.userService.findById(id) - assertThat(userFromBase?.equals(user)) - } - - @Test - @Throws(Exception::class) - fun shouldRedirectToCreateUserIfIdNotExists() { - val model = ExtendedModelMap() - val redirect = controller.getUserEditPage(UUID.randomUUID().toString(), model) - assertThat(redirect.equals("users/edit")) - assertThat(model.getValue("action") == "Create") - } - - @Test - @Throws(Exception::class) - fun shouldRedirectToEditCinemaIfIdExists() { - val user = User() - val id = UUID.randomUUID() - user.id = id - user.name = "test" - controller.updateUser(user) - val model = ExtendedModelMap() - val redirect = controller.getUserEditPage(id.toString(), model) - assertThat(redirect.equals("users/edit")) - assertThat(model.getValue("action") == "Edit") - } - - @Test - @Throws(Exception::class) - fun shouldReturnUsersBrowsePage() { - val user = User() - val id = UUID.randomUUID() - user.id = id - user.name = "test" - controller.updateUser(user) - val model = ExtendedModelMap() - val redirect = controller.getUsersBrowsePage(model) - assertThat(redirect.equals("users/list")) - assertThat(model.getValue("users")).isNotNull - } -} diff --git a/src/test/kotlin/com/s3ai/corporate_app2/controllers/UsersTest.kt b/src/test/kotlin/com/s3ai/corporate_app2/controllers/UsersTest.kt new file mode 100644 index 0000000..6a4bd0a --- /dev/null +++ b/src/test/kotlin/com/s3ai/corporate_app2/controllers/UsersTest.kt @@ -0,0 +1,81 @@ +package com.s3ai.corporate_app2.controllers + +import com.fasterxml.jackson.databind.ObjectMapper +import com.s3ai.corporate_app2.UserService +import org.assertj.core.api.Assertions.assertThat +import org.hamcrest.Matchers +import org.junit.jupiter.api.Test +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc +import org.springframework.boot.test.context.SpringBootTest +import org.springframework.http.MediaType +import org.springframework.test.context.jdbc.Sql +import org.springframework.test.web.servlet.MockMvc +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders +import org.springframework.test.web.servlet.result.MockMvcResultMatchers +import java.util.* + + +@SpringBootTest +@AutoConfigureMockMvc +class UsersTest { + @Autowired + private lateinit var service: UserService + + @Autowired + private lateinit var controller: UsersController + + @Autowired + private lateinit var mvc: MockMvc + + @Test + @Throws(Exception::class) + fun contextLoads() { + assertThat(controller).isNotNull + } + + @Test + @Throws(Exception::class) + @Sql("/usersFill.sql") + fun updateUserTest() { + val user = service.findAll().random() + print(user.id) + + user.name = UUID.randomUUID().toString() + + mvc.perform(MockMvcRequestBuilders.post("/users/update") + .contentType(MediaType.APPLICATION_JSON) + .content(ObjectMapper().writeValueAsString(user))) + .andExpect(MockMvcResultMatchers.status().isFound) + .andExpect(MockMvcResultMatchers.redirectedUrl("/users/list")) + + val updatedUser = service.findById(user.id!!) + assertThat(user == updatedUser) + } + + @Test + @Throws(Exception::class) + fun editRedirectToCreateIfIdEmptyTest() { + mvc.perform(MockMvcRequestBuilders.get("/users/edit")) + .andExpect(MockMvcResultMatchers.status().isOk) + .andExpect(MockMvcResultMatchers.model().attribute("action", Matchers.equalTo("Create"))) + } + + @Test + @Throws(Exception::class) + @Sql("/usersFill.sql") + fun editPageTest() { + val randomUserId = service.findAll().map { e -> e.id }.distinct().random() + mvc.perform(MockMvcRequestBuilders.get("/users/edit?id=${randomUserId}")) + .andExpect(MockMvcResultMatchers.status().isOk) + .andExpect(MockMvcResultMatchers.model().attribute("action", Matchers.equalTo("Edit"))) + } + + @Test + @Throws(Exception::class) + @Sql("/cinemasFill.sql") + fun listPageTest() { + mvc.perform(MockMvcRequestBuilders.get("/users/list")) + .andExpect(MockMvcResultMatchers.status().isOk) + } +} -- GitLab