-
Notifications
You must be signed in to change notification settings - Fork 0
/
BoardServiceTest.kt
181 lines (159 loc) · 6.22 KB
/
BoardServiceTest.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
package com.group.isolia_api.service.board
import com.group.isolia_api.domain.BoardType
import com.group.isolia_api.domain.LoginType
import com.group.isolia_api.domain.User
import com.group.isolia_api.domain.UserSub
import com.group.isolia_api.repository.board.BoardRepository
import com.group.isolia_api.repository.comment.CommentRepository
import com.group.isolia_api.repository.user.UserRepository
import com.group.isolia_api.schemas.board.request.BoardPostCreateRequest
import com.group.isolia_api.schemas.board.response.BoardUserInfo
import com.group.isolia_api.schemas.comment.request.CommentCreateRequest
import com.group.isolia_api.schemas.user.request.UserCreateRequest
import com.group.isolia_api.service.user.UserService
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.*
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.test.context.ActiveProfiles
@SpringBootTest
@ActiveProfiles("dev")
class BoardServiceTest @Autowired constructor(
private val boardRepository: BoardRepository,
private val boardService: BoardService,
private val userService: UserService,
private val userRepository: UserRepository,
private val commentRepository: CommentRepository
) {
private lateinit var user: User
private lateinit var userSub: UserSub
@BeforeEach
fun setup() {
user = userService.registerUser(
UserCreateRequest(
snsSub = null,
loginType = LoginType.EMAIL,
email = "sglee487@naver.com",
password = "1234",
displayName = "익명1",
picture32 = null,
picture96 = null,
)
)
userSub = user.getUserSub()
}
@AfterEach
fun clear() {
boardRepository.deleteAll()
userRepository.deleteAll()
}
@Test
@DisplayName("게시글 저장이 정상 동작한다")
fun createPostTest() {
// when
val boardPostCreateRequest = BoardPostCreateRequest(
boardType = BoardType.NOTICE,
title = "이것은 제목",
content = "이것은 내용"
)
boardService.createPost(boardPostCreateRequest, userSub)
// then
val boardPost = boardRepository.findAll().first()
assertThat(boardPost.boardType).isEqualTo(BoardType.NOTICE)
assertThat(boardPost.title).isEqualTo("이것은 제목")
assertThat(boardPost.content).isEqualTo("이것은 내용")
assertThat(boardPost.user).isEqualTo(user)
}
@Test
@DisplayName("게시판 (게시글들) 조회가 정상 동작한다")
fun getBoardListTest() {
// when
val noticeLength = 3
val freeLength = 5
for (i in 0 until noticeLength) {
boardService.createPost(
BoardPostCreateRequest(
boardType = BoardType.NOTICE,
title = "이것은 공지_${i}",
content = "이것은 공지 내용_${i}"
), userSub
)
}
for (i in 0 until freeLength) {
boardService.createPost(
BoardPostCreateRequest(
boardType = BoardType.FREE,
title = "이것은 자유_${i}",
content = "이것은 자유 내용_${i}"
), userSub
)
}
// then
val boardList = boardService.getBoardList()
assertThat(boardList.size).isEqualTo(noticeLength + freeLength)
val noticeList = boardService.getBoardList(BoardType.NOTICE)
assertThat(noticeList.size).isEqualTo(noticeLength)
val freeList = boardService.getBoardList(BoardType.FREE)
assertThat(freeList.size).isEqualTo(freeLength)
for (i in 0 until noticeLength) {
assertThat(noticeList[i].title).isEqualTo("이것은 공지_${i}")
assertThat(noticeList[i].boardUserInfo).isEqualTo(BoardUserInfo.of(user))
}
for (i in 0 until freeLength) {
assertThat(freeList[i].title).isEqualTo("이것은 자유_${i}")
assertThat(freeList[i].boardUserInfo).isEqualTo(BoardUserInfo.of(user))
}
val results = boardRepository.findAll()
assertThat(results.size).isEqualTo(noticeLength + freeLength)
}
@Test
@DisplayName("게시글 조회가 정상 동작한다")
fun getPostTest() {
// when
val boardId = boardService.createPost(
BoardPostCreateRequest(
boardType = BoardType.NOTICE,
title = "이것은 공지",
content = "이것은 공지 내용"
), userSub
)!!
// then
val board = boardService.getBoard(boardId)!!
assertThat(board.title).isEqualTo("이것은 공지")
assertThat(board.content).isEqualTo("이것은 공지 내용")
assertThat(board.userInfo).isEqualTo(BoardUserInfo.of(user))
val results = boardRepository.findAll()
assertThat(results.size).isEqualTo(1)
}
@Test
@DisplayName("댓글 저장이 정상 동작한다")
fun createCommentTest() {
// given
val boardId = boardService.createPost(
BoardPostCreateRequest(
boardType = BoardType.NOTICE,
title = "이것은 공지",
content = "이것은 공지 내용"
), userSub
)!!
// when
for (i in 0 until 3) {
boardService.createComment(
CommentCreateRequest(
content = "이것은 댓글 내용_${i}"
), boardId, userSub
)
}
// then
val board = boardService.getBoard(boardId)!!
assertThat(board.comments.size).isEqualTo(3)
for (i in 0 until 3) {
assertThat(board.comments[i].content).isEqualTo("이것은 댓글 내용_${i}")
assertThat(board.comments[i].userInfo).isEqualTo(BoardUserInfo.of(user))
}
val results = boardRepository.findAll()
assertThat(results.size).isEqualTo(1)
val commentResults = commentRepository.findAll()
assertThat(commentResults.size).isEqualTo(3)
}
}