feat(content-preference): 성인 콘텐츠 조회 메서드를 추가한다
This commit is contained in:
@@ -4,12 +4,14 @@ import kr.co.vividnext.sodalive.member.Member
|
||||
import org.springframework.web.context.request.RequestContextHolder
|
||||
import org.springframework.web.context.request.ServletRequestAttributes
|
||||
|
||||
@Deprecated("Use MemberContentPreferenceService.canViewAdultContent(member)")
|
||||
fun resolveCountryCodeByPolicy(member: Member): String {
|
||||
val requestAttributes = RequestContextHolder.getRequestAttributes() as? ServletRequestAttributes
|
||||
val requestCountryCode = requestAttributes?.request?.getHeader("CloudFront-Viewer-Country")
|
||||
return resolveCountryCodeWithForcedMapping(member, requestCountryCode)
|
||||
}
|
||||
|
||||
@Deprecated("Use MemberContentPreferenceService.canViewAdultContent(member)")
|
||||
fun isAdultVisibleByPolicy(member: Member, isAdultContentVisible: Boolean): Boolean {
|
||||
return if (resolveCountryCodeByPolicy(member) == "KR") {
|
||||
member.auth != null && isAdultContentVisible
|
||||
|
||||
@@ -153,6 +153,10 @@ class MemberContentPreferenceService(
|
||||
)
|
||||
}
|
||||
|
||||
fun canViewAdultContent(member: Member): Boolean {
|
||||
return getStoredPreference(member).isAdult
|
||||
}
|
||||
|
||||
fun resolveCountryCode(member: Member): String {
|
||||
requireMemberId(member)
|
||||
return resolveCountryCodeWithForcedMapping(member, countryContext.countryCode)
|
||||
|
||||
@@ -449,6 +449,23 @@ class MemberContentPreferenceServiceTest {
|
||||
assertTrue(service.calculateIsAdultForQuery(noAuthMember, "US", true))
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("성인 콘텐츠 조회 가능 여부는 저장 preference의 조회용 성인 정책 결과를 반환한다")
|
||||
fun shouldReturnStoredPreferenceAdultPolicyForCanViewAdultContent() {
|
||||
val member = createMember(id = 2200L)
|
||||
val preference = MemberContentPreference(
|
||||
isAdultContentVisible = true,
|
||||
contentType = ContentType.ALL,
|
||||
adultContentVisibilityChangedAt = LocalDateTime.now().minusDays(1),
|
||||
contentTypeChangedAt = LocalDateTime.now().minusDays(1)
|
||||
)
|
||||
preference.member = member
|
||||
countryContext.setCountryCode("KR")
|
||||
Mockito.`when`(repository.findByMemberId(2200L)).thenReturn(preference)
|
||||
|
||||
assertFalse(service.canViewAdultContent(member))
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("직접 설정 API 입력이 모두 누락되면 예외를 발생시킨다")
|
||||
fun shouldThrowWhenAllPreferenceFieldsAreMissing() {
|
||||
|
||||
Reference in New Issue
Block a user