우선 기존 배웠던 것을 생각해보며 먼저 작생해 보았다.
@Test
@DisplayName("책이 진작 대출되어 있다면, 신규 대출이 실패한다")
fun loanBookFailTest() {
//given
bookRepository.save(Book("미라클모닝"))
userRepository.save(User("솜사탕", 20))
userRepository.save(User("달콤해", 30))
val loanRequest1 = BookLoanRequest("솜사탕", "미라클모닝")
val loanRequest2 = BookLoanRequest("달콤해", "미라클모닝")
//when & then
bookService.loanBook(loanRequest1)
try {
bookService.loanBook(loanRequest2)
} catch (e: IllegalArgumentException) {
return
} catch (e: Exception) {
throw IllegalStateException()
}
try-catch
구문 안에 넣어 작성.일단 성공 하긴 한다ㅎㅎㅎ
강의를 들어보며 정확하게 작성법을 알아보자~
userLoanHistoryRepository.save(UserLoanHistory(savedUser, "미라클모닝", false))
userLoanHistoryRepository
를 사용해서 이미 대출된 상태로 만들면 됐다. assertThrows<IllegalArgumentException> {}
@Test
@DisplayName("책 반납이 정상 동작한다")
fun returnBookTest() {
//given
bookRepository.save(Book("미라클모닝"))
val savedUser = userRepository.save(User("솜사탕", 20))
userLoanHistoryRepository.save(UserLoanHistory(savedUser, "미라클모닝", false))
val request = BookReturnRequest("솜사탕", "미라클모닝")
//when
bookService.returnBook(request)
//then
val result = userLoanHistoryRepository.findAll()
assertThat(result).hasSize(1)
assertThat(result[0].bookName).isEqualTo("미라클모닝")
assertThat(result[0].isReturn).isTrue()
}
일단 이것도 정상 작동은 한다.. ㅎㅎ
강의를 보며 어디가 또 오류가 있나 찾아보자~
오~~~!!
강사님 코드랑 거의 일치한다!
@AfterEach
fun clear() {
bookRepository.deleteAll()
userRepository.deleteAll()
}
userRepository.deleteAll()
유저 정보도 비워주자~~~! 전체 테스트 성공~~!