diff --git a/src/test/kotlin/com/s3ai/corporate_app2/TestUtils.kt b/src/test/kotlin/com/s3ai/corporate_app2/TestUtils.kt index ab3d40a1fe353957cd6572e1219fd29f7c3625c3..35ecbafd6d837aa4a297382b27b97436ee26f60c 100644 --- a/src/test/kotlin/com/s3ai/corporate_app2/TestUtils.kt +++ b/src/test/kotlin/com/s3ai/corporate_app2/TestUtils.kt @@ -1,3 +1,17 @@ package com.s3ai.corporate_app2 +import com.fasterxml.jackson.databind.DeserializationFeature +import com.fasterxml.jackson.databind.MapperFeature +import com.fasterxml.jackson.dataformat.xml.JacksonXmlModule +import com.fasterxml.jackson.dataformat.xml.XmlMapper +import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper +import com.fasterxml.jackson.module.kotlin.registerKotlinModule + +internal val kotlinXmlMapper = XmlMapper(JacksonXmlModule().apply { + setDefaultUseWrapper(false) +}).registerKotlinModule() + .configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true) + .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) + +internal val kotlinJsonMapper = jacksonObjectMapper() \ No newline at end of file diff --git a/src/test/kotlin/com/s3ai/corporate_app2/controllers/rest/formats/CinemasFormattingTests.kt b/src/test/kotlin/com/s3ai/corporate_app2/controllers/rest/formats/CinemasFormattingTests.kt index 992f1c2ab76e00a6f675e76ef296ed654d653f28..5428d37656617d791a2a8d38f3fdf0aab91e7e73 100644 --- a/src/test/kotlin/com/s3ai/corporate_app2/controllers/rest/formats/CinemasFormattingTests.kt +++ b/src/test/kotlin/com/s3ai/corporate_app2/controllers/rest/formats/CinemasFormattingTests.kt @@ -1,9 +1,16 @@ package com.s3ai.corporate_app2.controllers.rest.formats +import com.fasterxml.jackson.databind.DeserializationFeature +import com.fasterxml.jackson.databind.MapperFeature +import com.fasterxml.jackson.dataformat.xml.JacksonXmlModule +import com.fasterxml.jackson.dataformat.xml.XmlMapper import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.fasterxml.jackson.module.kotlin.readValue +import com.fasterxml.jackson.module.kotlin.registerKotlinModule import com.s3ai.corporate_app2.Cinema import com.s3ai.corporate_app2.CinemaService +import com.s3ai.corporate_app2.kotlinJsonMapper +import com.s3ai.corporate_app2.kotlinXmlMapper import org.assertj.core.api.Assertions import org.hamcrest.CoreMatchers.equalTo import org.hamcrest.MatcherAssert.assertThat @@ -39,8 +46,7 @@ class CinemasFormattingTests { val mvcResult = mvc.perform(MockMvcRequestBuilders.get("/api/json/cinemas/all")) .andExpect(MockMvcResultMatchers.status().isOk) .andReturn() - val objectMapper = jacksonObjectMapper() - val cinemas: List<Cinema> = objectMapper.readValue(mvcResult.response.contentAsString) + val cinemas: List<Cinema> = kotlinJsonMapper.readValue(mvcResult.response.contentAsString) assertThat(cinemas.size, equalTo(100)) } @@ -51,9 +57,28 @@ class CinemasFormattingTests { val mvcResult = mvc.perform(MockMvcRequestBuilders.get("/api/json/cinemas/item/${randomCinema.id}")) .andExpect(MockMvcResultMatchers.status().isOk) .andReturn() - val objectMapper = jacksonObjectMapper() - val parsedCinema: Cinema = objectMapper.readValue(mvcResult.response.contentAsString) + val parsedCinema: Cinema = kotlinJsonMapper.readValue(mvcResult.response.contentAsString) assertThat(parsedCinema.toString(), equalTo(randomCinema.toString())) } + @Test + @Sql("/cinemasFill.sql") + fun allXMLTest() { + val mvcResult = mvc.perform(MockMvcRequestBuilders.get("/api/xml/cinemas/all")) + .andExpect(MockMvcResultMatchers.status().isOk) + .andReturn() + val cinemas: List<Cinema> = kotlinXmlMapper.readValue(mvcResult.response.contentAsString) + assertThat(cinemas.size, equalTo(100)) + } + + @Test + @Sql("/cinemasFill.sql") + fun itemXMLTest() { + val randomCinema = service.findAll().random() + val mvcResult = mvc.perform(MockMvcRequestBuilders.get("/api/xml/cinemas/item/${randomCinema.id}")) + .andExpect(MockMvcResultMatchers.status().isOk) + .andReturn() + val parsedCinema: Cinema = kotlinXmlMapper.readValue(mvcResult.response.contentAsString) + assertThat(parsedCinema.toString(), equalTo(randomCinema.toString())) + } } \ No newline at end of file diff --git a/src/test/kotlin/com/s3ai/corporate_app2/controllers/rest/formats/TicketsFormattingTests.kt b/src/test/kotlin/com/s3ai/corporate_app2/controllers/rest/formats/TicketsFormattingTests.kt new file mode 100644 index 0000000000000000000000000000000000000000..2af121d0cada32827f2dc4632132b4022b384778 --- /dev/null +++ b/src/test/kotlin/com/s3ai/corporate_app2/controllers/rest/formats/TicketsFormattingTests.kt @@ -0,0 +1,78 @@ +package com.s3ai.corporate_app2.controllers.rest.formats + +import com.fasterxml.jackson.module.kotlin.readValue +import com.s3ai.corporate_app2.Ticket +import com.s3ai.corporate_app2.TicketService +import com.s3ai.corporate_app2.kotlinJsonMapper +import com.s3ai.corporate_app2.kotlinXmlMapper +import org.assertj.core.api.Assertions +import org.hamcrest.CoreMatchers.equalTo +import org.hamcrest.MatcherAssert.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.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 + + +@SpringBootTest +@AutoConfigureMockMvc +class TicketsFormattingTests { + @Autowired + private lateinit var service: TicketService + + @Autowired + private lateinit var mvc: MockMvc + + @Test + @Throws(Exception::class) + fun contextLoads() { + Assertions.assertThat(mvc).isNotNull + Assertions.assertThat(service).isNotNull + } + + @Test + @Sql("/cinemasFill.sql", "/usersFill.sql", "/ticketsFill.sql") + fun allJSONTest() { + val mvcResult = mvc.perform(MockMvcRequestBuilders.get("/api/json/tickets/all")) + .andExpect(MockMvcResultMatchers.status().isOk) + .andReturn() + val cinemas: List<Ticket> = kotlinJsonMapper.readValue(mvcResult.response.contentAsString) + assertThat(cinemas.size, equalTo(100)) + } + + @Test + @Sql("/cinemasFill.sql", "/usersFill.sql", "/ticketsFill.sql") + fun itemJSONTest() { + val randomTicket = service.findAll().random() + val mvcResult = mvc.perform(MockMvcRequestBuilders.get("/api/json/tickets/item/${randomTicket.id}")) + .andExpect(MockMvcResultMatchers.status().isOk) + .andReturn() + val parsedTicket: Ticket = kotlinJsonMapper.readValue(mvcResult.response.contentAsString) + assertThat(parsedTicket.toString(), equalTo(randomTicket.toString())) + } + + @Test + @Sql("/cinemasFill.sql", "/usersFill.sql", "/ticketsFill.sql") + fun allXMLTest() { + val mvcResult = mvc.perform(MockMvcRequestBuilders.get("/api/xml/tickets/all")) + .andExpect(MockMvcResultMatchers.status().isOk) + .andReturn() + val cinemas: List<Ticket> = kotlinXmlMapper.readValue(mvcResult.response.contentAsString) + assertThat(cinemas.size, equalTo(100)) + } + + @Test + @Sql("/cinemasFill.sql", "/usersFill.sql", "/ticketsFill.sql") + fun itemXMLTest() { + val randomTicket = service.findAll().random() + val mvcResult = mvc.perform(MockMvcRequestBuilders.get("/api/xml/tickets/item/${randomTicket.id}")) + .andExpect(MockMvcResultMatchers.status().isOk) + .andReturn() + val parsedTicket: Ticket = kotlinXmlMapper.readValue(mvcResult.response.contentAsString) + assertThat(parsedTicket.toString(), equalTo(randomTicket.toString())) + } +} \ No newline at end of file diff --git a/src/test/kotlin/com/s3ai/corporate_app2/controllers/rest/formats/UsersFormattingTests.kt b/src/test/kotlin/com/s3ai/corporate_app2/controllers/rest/formats/UsersFormattingTests.kt new file mode 100644 index 0000000000000000000000000000000000000000..a6cd837e536d68cd4acbdde5c6bdbb0c998d45cc --- /dev/null +++ b/src/test/kotlin/com/s3ai/corporate_app2/controllers/rest/formats/UsersFormattingTests.kt @@ -0,0 +1,83 @@ +package com.s3ai.corporate_app2.controllers.rest.formats + +import com.fasterxml.jackson.databind.DeserializationFeature +import com.fasterxml.jackson.databind.MapperFeature +import com.fasterxml.jackson.dataformat.xml.JacksonXmlModule +import com.fasterxml.jackson.dataformat.xml.XmlMapper +import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper +import com.fasterxml.jackson.module.kotlin.readValue +import com.fasterxml.jackson.module.kotlin.registerKotlinModule +import com.s3ai.corporate_app2.* +import com.s3ai.corporate_app2.kotlinJsonMapper +import com.s3ai.corporate_app2.kotlinXmlMapper +import org.assertj.core.api.Assertions +import org.hamcrest.CoreMatchers.equalTo +import org.hamcrest.MatcherAssert.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.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 + + +@SpringBootTest +@AutoConfigureMockMvc +class UsersFormattingTests { + @Autowired + private lateinit var service: UserService + + @Autowired + private lateinit var mvc: MockMvc + + @Test + @Throws(Exception::class) + fun contextLoads() { + Assertions.assertThat(mvc).isNotNull + Assertions.assertThat(service).isNotNull + } + + @Test + @Sql("/usersFill.sql") + fun allJSONTest() { + val mvcResult = mvc.perform(MockMvcRequestBuilders.get("/api/json/users/all")) + .andExpect(MockMvcResultMatchers.status().isOk) + .andReturn() + val cinemas: List<User> = kotlinJsonMapper.readValue(mvcResult.response.contentAsString) + assertThat(cinemas.size, equalTo(100)) + } + + @Test + @Sql("/usersFill.sql") + fun itemJSONTest() { + val randomUser = service.findAll().random() + val mvcResult = mvc.perform(MockMvcRequestBuilders.get("/api/json/users/item/${randomUser.id}")) + .andExpect(MockMvcResultMatchers.status().isOk) + .andReturn() + val parsedUser: User = kotlinJsonMapper.readValue(mvcResult.response.contentAsString) + assertThat(parsedUser.toString(), equalTo(randomUser.toString())) + } + + @Test + @Sql("/usersFill.sql") + fun allXMLTest() { + val mvcResult = mvc.perform(MockMvcRequestBuilders.get("/api/xml/users/all")) + .andExpect(MockMvcResultMatchers.status().isOk) + .andReturn() + val cinemas: List<User> = kotlinXmlMapper.readValue(mvcResult.response.contentAsString) + assertThat(cinemas.size, equalTo(100)) + } + + @Test + @Sql("/usersFill.sql") + fun itemXMLTest() { + val randomUser = service.findAll().random() + val mvcResult = mvc.perform(MockMvcRequestBuilders.get("/api/xml/users/item/${randomUser.id}")) + .andExpect(MockMvcResultMatchers.status().isOk) + .andReturn() + val parsedUser: User = kotlinXmlMapper.readValue(mvcResult.response.contentAsString) + assertThat(parsedUser.toString(), equalTo(randomUser.toString())) + } +} \ No newline at end of file