fix(admin-member): 회원 목록 lazy 초기화를 방지한다
This commit is contained in:
@@ -16,6 +16,7 @@ import java.time.ZoneId
|
||||
import java.time.format.DateTimeFormatter
|
||||
|
||||
@Service
|
||||
@Transactional(readOnly = true)
|
||||
class AdminMemberService(
|
||||
private val repository: AdminMemberRepository,
|
||||
private val passwordEncoder: PasswordEncoder,
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
package kr.co.vividnext.sodalive.admin.member
|
||||
|
||||
import kr.co.vividnext.sodalive.member.Member
|
||||
import kr.co.vividnext.sodalive.member.MemberRole
|
||||
import kr.co.vividnext.sodalive.member.SignOut
|
||||
import kr.co.vividnext.sodalive.member.SignOutRepository
|
||||
import kr.co.vividnext.sodalive.support.EmbeddedRedisInitializer
|
||||
import org.junit.jupiter.api.AfterEach
|
||||
import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import org.junit.jupiter.api.Assertions.assertTrue
|
||||
import org.junit.jupiter.api.DisplayName
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.springframework.beans.factory.annotation.Autowired
|
||||
import org.springframework.boot.test.context.SpringBootTest
|
||||
import org.springframework.data.domain.PageRequest
|
||||
import org.springframework.test.context.ContextConfiguration
|
||||
|
||||
@SpringBootTest(properties = ["cloud.aws.cloud-front.host=https://cdn.test"])
|
||||
@ContextConfiguration(initializers = [EmbeddedRedisInitializer::class])
|
||||
class AdminMemberServiceTest @Autowired constructor(
|
||||
private val service: AdminMemberService,
|
||||
private val adminMemberRepository: AdminMemberRepository,
|
||||
private val signOutRepository: SignOutRepository
|
||||
) {
|
||||
@AfterEach
|
||||
fun tearDown() {
|
||||
signOutRepository.deleteAll()
|
||||
adminMemberRepository.deleteAll()
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("OSIV off 환경에서 탈퇴 이력이 있는 회원 리스트를 조회해도 lazy 초기화 예외가 발생하지 않는다")
|
||||
fun shouldGetMemberListWithSignOutReasonsWhenOpenInViewIsDisabled() {
|
||||
val member = saveMemberWithSignOutReason(
|
||||
email = "admin-member-list-user@test.com",
|
||||
nickname = "회원 목록 사용자",
|
||||
role = MemberRole.USER
|
||||
)
|
||||
|
||||
val response = service.getMemberList(PageRequest.of(0, 20))
|
||||
|
||||
val item = response.items.single { it.id == member.id }
|
||||
assertEquals(1, response.totalCount)
|
||||
assertTrue(item.signOutDate.isNotBlank())
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("OSIV off 환경에서 탈퇴 이력이 있는 크리에이터 리스트를 조회해도 lazy 초기화 예외가 발생하지 않는다")
|
||||
fun shouldGetCreatorListWithSignOutReasonsWhenOpenInViewIsDisabled() {
|
||||
val creator = saveMemberWithSignOutReason(
|
||||
email = "admin-member-list-creator@test.com",
|
||||
nickname = "크리에이터 목록 사용자",
|
||||
role = MemberRole.CREATOR
|
||||
)
|
||||
|
||||
val response = service.getCreatorList(PageRequest.of(0, 20))
|
||||
|
||||
val item = response.items.single { it.id == creator.id }
|
||||
assertEquals(1, response.totalCount)
|
||||
assertTrue(item.signOutDate.isNotBlank())
|
||||
}
|
||||
|
||||
private fun saveMemberWithSignOutReason(
|
||||
email: String,
|
||||
nickname: String,
|
||||
role: MemberRole
|
||||
): Member {
|
||||
val member = adminMemberRepository.save(
|
||||
Member(
|
||||
email = email,
|
||||
password = "password",
|
||||
nickname = nickname,
|
||||
role = role
|
||||
)
|
||||
)
|
||||
val signOut = SignOut(reason = "운영 정책 위반")
|
||||
signOut.member = member
|
||||
signOutRepository.save(signOut)
|
||||
return member
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user