From aee1a40cf83a51b87b2f697f50896982fa63ee17 Mon Sep 17 00:00:00 2001
From: Pavel Kirilin <win10@list.ru>
Date: Tue, 17 Dec 2019 01:32:43 +0400
Subject: [PATCH] Added tests. Description: - Added testing on formatting.

Signed-off-by: Pavel Kirilin <win10@list.ru>
---
 .../{ => controllers}/CinemasApiTest.kt       | 34 +----------
 .../{ => controllers}/TicketsApiTest.kt       |  4 +-
 .../{ => controllers}/UsersApiTest.kt         |  4 +-
 .../controllers/rest/CinemaApiTest.kt         | 59 +++++++++++++++++++
 .../rest/formats/CinemasFormattingTests.kt    | 59 +++++++++++++++++++
 5 files changed, 124 insertions(+), 36 deletions(-)
 rename src/test/kotlin/com/s3ai/corporate_app2/{ => controllers}/CinemasApiTest.kt (65%)
 rename src/test/kotlin/com/s3ai/corporate_app2/{ => controllers}/TicketsApiTest.kt (95%)
 rename src/test/kotlin/com/s3ai/corporate_app2/{ => controllers}/UsersApiTest.kt (95%)
 create mode 100644 src/test/kotlin/com/s3ai/corporate_app2/controllers/rest/CinemaApiTest.kt
 create mode 100644 src/test/kotlin/com/s3ai/corporate_app2/controllers/rest/formats/CinemasFormattingTests.kt

diff --git a/src/test/kotlin/com/s3ai/corporate_app2/CinemasApiTest.kt b/src/test/kotlin/com/s3ai/corporate_app2/controllers/CinemasApiTest.kt
similarity index 65%
rename from src/test/kotlin/com/s3ai/corporate_app2/CinemasApiTest.kt
rename to src/test/kotlin/com/s3ai/corporate_app2/controllers/CinemasApiTest.kt
index 62638c0..c945828 100644
--- a/src/test/kotlin/com/s3ai/corporate_app2/CinemasApiTest.kt
+++ b/src/test/kotlin/com/s3ai/corporate_app2/controllers/CinemasApiTest.kt
@@ -1,17 +1,12 @@
-package com.s3ai.corporate_app2
+package com.s3ai.corporate_app2.controllers
 
-import com.s3ai.corporate_app2.controllers.CinemasController
-import com.s3ai.corporate_app2.controllers.rest.CinemaApiController
+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.http.MediaType
-import org.springframework.test.context.jdbc.Sql
 import org.springframework.test.web.servlet.MockMvc
-import org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get
-import org.springframework.test.web.servlet.result.MockMvcResultMatchers.status
 import org.springframework.ui.ExtendedModelMap
 import java.util.*
 
@@ -25,14 +20,10 @@ class CinemasApiTest {
     @Autowired
     private lateinit var mvc: MockMvc
 
-    @Autowired
-    private lateinit var apiController: CinemaApiController
-
     @Test
     @Throws(Exception::class)
     fun contextLoads() {
         assertThat(controller).isNotNull
-        assertThat(apiController).isNotNull
     }
 
     @Test
@@ -84,25 +75,4 @@ class CinemasApiTest {
         assertThat(model.getValue("cinemas")).isNotNull
     }
 
-    @Test
-    @Sql("/cinemasFill.sql")
-    fun mvcTest() {
-        mvc.perform(get("/api/json/cinemas/all")
-                .contentType(MediaType.APPLICATION_JSON))
-                .andExpect(status().isOk)
-    }
-
-//    @Test
-//    @Throws(Exception::class)
-//    fun shouldDeleteCinema() {
-//        val cinema = Cinema()
-//        val id = UUID.randomUUID()
-//        cinema.id = id
-//        cinema.name = "test"
-//        controller.updateCinema(cinema)
-//        var responce = HttpResponseFactory
-//        apiController.deleteCinema(id.toString(), Http)
-//        val cinemaFromBase = controller.cinemaService.findById(id)
-//        assertThat(cinemaFromBase?.equals(cinema))
-//    }
 }
diff --git a/src/test/kotlin/com/s3ai/corporate_app2/TicketsApiTest.kt b/src/test/kotlin/com/s3ai/corporate_app2/controllers/TicketsApiTest.kt
similarity index 95%
rename from src/test/kotlin/com/s3ai/corporate_app2/TicketsApiTest.kt
rename to src/test/kotlin/com/s3ai/corporate_app2/controllers/TicketsApiTest.kt
index 1b91a80..4155762 100644
--- a/src/test/kotlin/com/s3ai/corporate_app2/TicketsApiTest.kt
+++ b/src/test/kotlin/com/s3ai/corporate_app2/controllers/TicketsApiTest.kt
@@ -1,6 +1,6 @@
-package com.s3ai.corporate_app2
+package com.s3ai.corporate_app2.controllers
 
-import com.s3ai.corporate_app2.controllers.TicketsController
+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
diff --git a/src/test/kotlin/com/s3ai/corporate_app2/UsersApiTest.kt b/src/test/kotlin/com/s3ai/corporate_app2/controllers/UsersApiTest.kt
similarity index 95%
rename from src/test/kotlin/com/s3ai/corporate_app2/UsersApiTest.kt
rename to src/test/kotlin/com/s3ai/corporate_app2/controllers/UsersApiTest.kt
index 8ff981c..121ea0a 100644
--- a/src/test/kotlin/com/s3ai/corporate_app2/UsersApiTest.kt
+++ b/src/test/kotlin/com/s3ai/corporate_app2/controllers/UsersApiTest.kt
@@ -1,6 +1,6 @@
-package com.s3ai.corporate_app2
+package com.s3ai.corporate_app2.controllers
 
-import com.s3ai.corporate_app2.controllers.UsersController
+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
diff --git a/src/test/kotlin/com/s3ai/corporate_app2/controllers/rest/CinemaApiTest.kt b/src/test/kotlin/com/s3ai/corporate_app2/controllers/rest/CinemaApiTest.kt
new file mode 100644
index 0000000..6a8c2cf
--- /dev/null
+++ b/src/test/kotlin/com/s3ai/corporate_app2/controllers/rest/CinemaApiTest.kt
@@ -0,0 +1,59 @@
+package com.s3ai.corporate_app2.controllers.rest
+
+import com.s3ai.corporate_app2.CinemaService
+import com.s3ai.corporate_app2.TicketService
+import org.assertj.core.api.Assertions
+import org.hamcrest.MatcherAssert.assertThat
+import org.hamcrest.Matchers.equalTo
+import org.hamcrest.Matchers.hasItem
+import org.hamcrest.core.IsNot.not
+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.MvcResult
+import org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete
+import org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get
+import org.springframework.test.web.servlet.result.MockMvcResultMatchers.status
+
+@SpringBootTest
+@AutoConfigureMockMvc
+class CinemaApiTest {
+    @Autowired
+    private lateinit var service: CinemaService
+
+    @Autowired
+    private lateinit var ticketService: 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")
+    fun fillTest() {
+        mvc.perform(get("/api/cinemas/fill"))
+                .andDo { e: MvcResult -> println(e.response) }
+                .andExpect(status().isOk)
+        assertThat(service.findAll().size, equalTo(401))
+    }
+
+    @Test
+    @Sql("/cinemasFill.sql", "/usersFill.sql", "/ticketsFill.sql")
+    fun deleteTest() {
+        val randomCinemaId = ticketService.findAll().map { e -> e.cinema?.id }.distinct().random()
+        print(randomCinemaId)
+        mvc.perform(delete("/api/cinemas/delete?id=${randomCinemaId}"))
+                .andExpect(status().isOk)
+        val newCinemas = ticketService.findAll().map { e -> e.cinema!!.id }.distinct()
+        assertThat(newCinemas, not(hasItem(randomCinemaId)))
+    }
+}
\ 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
new file mode 100644
index 0000000..992f1c2
--- /dev/null
+++ b/src/test/kotlin/com/s3ai/corporate_app2/controllers/rest/formats/CinemasFormattingTests.kt
@@ -0,0 +1,59 @@
+package com.s3ai.corporate_app2.controllers.rest.formats
+
+import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
+import com.fasterxml.jackson.module.kotlin.readValue
+import com.s3ai.corporate_app2.Cinema
+import com.s3ai.corporate_app2.CinemaService
+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 CinemasFormattingTests {
+    @Autowired
+    private lateinit var service: CinemaService
+
+    @Autowired
+    private lateinit var mvc: MockMvc
+
+    @Test
+    @Throws(Exception::class)
+    fun contextLoads() {
+        Assertions.assertThat(mvc).isNotNull
+        Assertions.assertThat(service).isNotNull
+    }
+
+    @Test
+    @Sql("/cinemasFill.sql")
+    fun allJSONTest() {
+        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)
+        assertThat(cinemas.size, equalTo(100))
+    }
+
+    @Test
+    @Sql("/cinemasFill.sql")
+    fun itemJSONTest() {
+        val randomCinema = service.findAll().random()
+        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)
+        assertThat(parsedCinema.toString(), equalTo(randomCinema.toString()))
+    }
+
+}
\ No newline at end of file
-- 
GitLab