fix(admin-member): 회원 목록 lazy 초기화를 방지한다
This commit is contained in:
@@ -16,6 +16,7 @@ import java.time.ZoneId
|
|||||||
import java.time.format.DateTimeFormatter
|
import java.time.format.DateTimeFormatter
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
@Transactional(readOnly = true)
|
||||||
class AdminMemberService(
|
class AdminMemberService(
|
||||||
private val repository: AdminMemberRepository,
|
private val repository: AdminMemberRepository,
|
||||||
private val passwordEncoder: PasswordEncoder,
|
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