@@ -4,61 +4,58 @@ import me.loghub.api.dto.article.*
44import me.loghub.api.dto.auth.token.TokenDTO
55import me.loghub.api.entity.user.User
66import me.loghub.api.service.test.TestGrantService
7+ import me.loghub.api.util.resetDatabase
78import org.junit.jupiter.api.*
89import org.springframework.beans.factory.annotation.Autowired
910import org.springframework.boot.test.context.SpringBootTest
1011import org.springframework.boot.test.web.client.TestRestTemplate
11- import org.springframework.core.io.ClassPathResource
1212import org.springframework.data.domain.Page
1313import org.springframework.http.HttpHeaders
1414import org.springframework.http.HttpStatus
1515import org.springframework.http.RequestEntity
1616import org.springframework.http.ResponseEntity
1717import org.springframework.jdbc.core.JdbcTemplate
18- import org.springframework.jdbc.datasource.init.DatabasePopulatorUtils
19- import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator
2018import org.springframework.test.context.ActiveProfiles
2119import org.springframework.web.util.UriComponentsBuilder
2220import kotlin.test.Test
2321import kotlin.test.assertEquals
2422
2523@SpringBootTest(webEnvironment = SpringBootTest .WebEnvironment .RANDOM_PORT )
24+ @TestInstance(TestInstance .Lifecycle .PER_CLASS )
2625@TestClassOrder(ClassOrderer .OrderAnnotation ::class )
2726@ActiveProfiles(" test" )
2827class ArticleControllerTest (
2928 @Autowired private val rest : TestRestTemplate ,
3029 @Autowired private val jdbcTemplate : JdbcTemplate ,
3130) {
32- companion object {
33- lateinit var member1: User
34- lateinit var member1Token: TokenDTO
35- lateinit var member2: User
36- lateinit var member2Token: TokenDTO
37-
38- object Article {
39- object Id {
40- const val BY_MEMBER1 = 1L
41- const val INVALID = 999L
42- }
43-
44- object Slug {
45- const val BY_MEMBER1 = " article-1"
46- const val INVALID = " unknown-article"
47- }
31+ lateinit var member1: User
32+ lateinit var member1Token: TokenDTO
33+ lateinit var member2: User
34+ lateinit var member2Token: TokenDTO
35+
36+ object Article {
37+ object Id {
38+ const val BY_MEMBER1 = 1L
39+ const val INVALID = 999L
4840 }
4941
50- @JvmStatic
51- @BeforeAll
52- fun setup (@Autowired grantService : TestGrantService ) {
53- val (member1, member1Token) = grantService.grant(" member1" )
54- this .member1 = member1
55- this .member1Token = member1Token
56- val (member2, member2Token) = grantService.grant(" member2" )
57- this .member2 = member2
58- this .member2Token = member2Token
42+ object Slug {
43+ const val BY_MEMBER1 = " article-1"
44+ const val INVALID = " unknown-article"
5945 }
6046 }
6147
48+ @BeforeAll
49+ fun setup (@Autowired grantService : TestGrantService ) {
50+ resetDatabase(jdbcTemplate)
51+ val (member1, member1Token) = grantService.grant(" member1" )
52+ this .member1 = member1
53+ this .member1Token = member1Token
54+ val (member2, member2Token) = grantService.grant(" member2" )
55+ this .member2 = member2
56+ this .member2Token = member2Token
57+ }
58+
6259 private inline fun <reified T > searchArticles (uri : String ) =
6360 rest.getForEntity(uri, T ::class .java)
6461
@@ -93,23 +90,12 @@ class ArticleControllerTest(
9390 return rest.exchange(request.build(), T ::class .java)
9491 }
9592
96- private fun resetDatabase () {
97- val dataSource = jdbcTemplate.dataSource
98- ? : error(" DataSource is required for resetting database" )
99- val populator = ResourceDatabasePopulator ().apply {
100- addScript(ClassPathResource (" /database/data/truncate.sql" ))
101- addScript(ClassPathResource (" /database/data/test.sql" ))
102- }
103-
104- DatabasePopulatorUtils .execute(populator, dataSource)
105- }
106-
10793 @Nested
10894 @Order(1 )
10995 @TestInstance(TestInstance .Lifecycle .PER_CLASS )
11096 inner class SearchArticles {
11197 @BeforeAll
112- fun setupDatabase () = resetDatabase()
98+ fun setupDatabase () = resetDatabase(jdbcTemplate )
11399
114100 @Test
115101 fun `searchArticles - ok - no params` () {
@@ -152,7 +138,7 @@ class ArticleControllerTest(
152138 @TestInstance(TestInstance .Lifecycle .PER_CLASS )
153139 inner class GetArticle {
154140 @BeforeAll
155- fun setupDatabase () = resetDatabase()
141+ fun setupDatabase () = resetDatabase(jdbcTemplate )
156142
157143 @Test
158144 fun `getArticle - not_found` () {
@@ -173,7 +159,7 @@ class ArticleControllerTest(
173159 @TestInstance(TestInstance .Lifecycle .PER_CLASS )
174160 inner class GetArticleForEdit {
175161 @BeforeAll
176- fun setupDatabase () = resetDatabase()
162+ fun setupDatabase () = resetDatabase(jdbcTemplate )
177163
178164 @Test
179165 fun `getArticleForEdit - unauthorized` () {
@@ -213,7 +199,7 @@ class ArticleControllerTest(
213199 )
214200
215201 @BeforeAll
216- fun setupDatabase () = resetDatabase()
202+ fun setupDatabase () = resetDatabase(jdbcTemplate )
217203
218204 @Test
219205 fun `postArticle - unauthorized` () {
@@ -258,7 +244,7 @@ class ArticleControllerTest(
258244 )
259245
260246 @BeforeAll
261- fun setupDatabase () = resetDatabase()
247+ fun setupDatabase () = resetDatabase(jdbcTemplate )
262248
263249 @Test
264250 fun `editArticle - unauthorized` () {
@@ -297,7 +283,7 @@ class ArticleControllerTest(
297283 @TestMethodOrder(MethodOrderer .OrderAnnotation ::class )
298284 inner class DeleteArticle {
299285 @BeforeAll
300- fun setupDatabase () = resetDatabase()
286+ fun setupDatabase () = resetDatabase(jdbcTemplate )
301287
302288 @Test
303289 fun `deleteArticle - unauthorized` () {
0 commit comments