feat(live-room): 라이브 캡쳐 녹화 가능 여부를 생성 조회에 반영한다
This commit is contained in:
@@ -16,6 +16,7 @@ import kr.co.vividnext.sodalive.i18n.LangContext
|
||||
import kr.co.vividnext.sodalive.i18n.SodaMessageSource
|
||||
import kr.co.vividnext.sodalive.live.reservation.LiveReservationRepository
|
||||
import kr.co.vividnext.sodalive.live.room.cancel.LiveRoomCancelRepository
|
||||
import kr.co.vividnext.sodalive.live.room.info.LiveRoomInfo
|
||||
import kr.co.vividnext.sodalive.live.room.info.LiveRoomInfoRedisRepository
|
||||
import kr.co.vividnext.sodalive.live.room.kickout.LiveRoomKickOutService
|
||||
import kr.co.vividnext.sodalive.live.room.menu.LiveRoomMenuService
|
||||
@@ -33,9 +34,12 @@ import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import org.junit.jupiter.api.BeforeEach
|
||||
import org.junit.jupiter.api.DisplayName
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.mockito.ArgumentCaptor
|
||||
import org.mockito.Mockito
|
||||
import org.springframework.context.ApplicationEventPublisher
|
||||
import org.springframework.data.domain.PageRequest
|
||||
import java.time.LocalDateTime
|
||||
import java.util.Optional
|
||||
|
||||
class LiveRoomServiceAdultVisibilityPolicyTest {
|
||||
private lateinit var menuService: LiveRoomMenuService
|
||||
@@ -240,6 +244,86 @@ class LiveRoomServiceAdultVisibilityPolicyTest {
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("라이브 생성 시 캡쳐/녹화 가능 여부를 저장한다")
|
||||
fun shouldPersistCaptureAndRecordingAvailabilityOnCreate() {
|
||||
val member = createMember(id = 300L)
|
||||
val request = CreateLiveRoomRequest(
|
||||
title = "title",
|
||||
content = "notice",
|
||||
coverImageUrl = "https://image.example.com/cover.png",
|
||||
isAdult = false,
|
||||
tags = emptyList(),
|
||||
numberOfPeople = 10,
|
||||
timezone = "Asia/Seoul",
|
||||
isCaptureRecordingAvailable = false
|
||||
)
|
||||
|
||||
Mockito.`when`(repository.getActiveRoomIdList(memberId = 300L)).thenReturn(0)
|
||||
Mockito.`when`(repository.getRoomActiveAndChannelNameIsNotNull(memberId = 300L)).thenReturn(emptyList())
|
||||
Mockito.`when`(objectMapper.readValue("request-json", CreateLiveRoomRequest::class.java)).thenReturn(request)
|
||||
Mockito.`when`(repository.save(Mockito.any(LiveRoom::class.java))).thenAnswer { invocation ->
|
||||
invocation.arguments[0] as LiveRoom
|
||||
}
|
||||
|
||||
service.createLiveRoom(coverImage = null, requestString = "request-json", member = member)
|
||||
|
||||
val roomCaptor = ArgumentCaptor.forClass(LiveRoom::class.java)
|
||||
Mockito.verify(repository).save(roomCaptor.capture())
|
||||
assertEquals(false, roomCaptor.value.isCaptureRecordingAvailable)
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("라이브 정보 조회에 캡쳐/녹화 가능 여부를 포함한다")
|
||||
fun shouldIncludeCaptureAndRecordingAvailabilityInRoomInfo() {
|
||||
val viewer = createMember(id = 400L)
|
||||
val creator = createMember(id = 401L)
|
||||
creator.isVisibleDonationRank = false
|
||||
|
||||
val room = LiveRoom(
|
||||
title = "title",
|
||||
notice = "notice",
|
||||
beginDateTime = LocalDateTime.now(),
|
||||
numberOfPeople = 10,
|
||||
coverImage = "cover/image.png",
|
||||
isAdult = false,
|
||||
isCaptureRecordingAvailable = false
|
||||
)
|
||||
room.id = 999L
|
||||
room.member = creator
|
||||
room.channelName = "SODA_LIVE_CHANNEL_TEST"
|
||||
|
||||
val roomInfo = LiveRoomInfo(roomId = 999L)
|
||||
|
||||
Mockito.`when`(roomInfoRepository.findById(999L)).thenReturn(Optional.of(roomInfo))
|
||||
Mockito.`when`(repository.findById(999L)).thenReturn(Optional.of(room))
|
||||
Mockito.`when`(blockMemberRepository.isBlocked(Mockito.anyLong(), Mockito.anyLong())).thenReturn(false)
|
||||
Mockito.`when`(
|
||||
rtcTokenBuilder.buildTokenWithUid(
|
||||
Mockito.anyString(),
|
||||
Mockito.anyString(),
|
||||
Mockito.anyString(),
|
||||
Mockito.anyString(),
|
||||
Mockito.anyInt()
|
||||
)
|
||||
).thenReturn("rtc-token")
|
||||
Mockito.`when`(
|
||||
rtmTokenBuilder.buildToken(
|
||||
Mockito.anyString(),
|
||||
Mockito.anyString(),
|
||||
Mockito.anyString(),
|
||||
Mockito.anyInt()
|
||||
)
|
||||
).thenReturn("rtm-token")
|
||||
Mockito.`when`(explorerQueryRepository.getNotificationUserIds(creator.id!!)).thenReturn(emptyList())
|
||||
Mockito.`when`(rouletteRepository.findByCreatorId(creator.id!!)).thenReturn(emptyList())
|
||||
Mockito.`when`(pushTokenRepository.findByMemberId(creator.id!!)).thenReturn(emptyList())
|
||||
|
||||
val response = service.getRoomInfo(roomId = 999L, member = viewer)
|
||||
|
||||
assertEquals(false, response.isCaptureRecordingAvailable)
|
||||
}
|
||||
|
||||
private fun createMember(id: Long): Member {
|
||||
val member = Member(
|
||||
email = "member$id@test.com",
|
||||
|
||||
Reference in New Issue
Block a user