diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt index 3bc20e6a..b6b127e1 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt @@ -39,6 +39,7 @@ import kr.co.vividnext.sodalive.member.Member import kr.co.vividnext.sodalive.member.block.BlockMemberRepository import kr.co.vividnext.sodalive.member.contentpreference.isAdultVisibleByPolicy import kr.co.vividnext.sodalive.utils.generateFileName +import kr.co.vividnext.sodalive.v2.recommend.application.CreatorContentViewHistoryService import org.springframework.beans.factory.annotation.Value import org.springframework.cache.annotation.Cacheable import org.springframework.context.ApplicationEventPublisher @@ -63,6 +64,7 @@ class AudioContentService( private val limitedEditionOrderRepository: LimitedEditionOrderRepository, private val themeQueryRepository: AudioContentThemeQueryRepository, private val playbackTrackingRepository: PlaybackTrackingRepository, + private val creatorContentViewHistoryService: CreatorContentViewHistoryService, private val commentRepository: AudioContentCommentRepository, private val audioContentLikeRepository: AudioContentLikeRepository, private val pinContentRepository: PinContentRepository, @@ -813,6 +815,13 @@ class AudioContentService( } } + runCatching { + creatorContentViewHistoryService.recordView( + memberId = member.id!!, + contentId = audioContent.id!! + ) + } + return GetAudioContentDetailResponse( contentId = audioContent.id!!, title = audioContent.title, diff --git a/src/test/kotlin/kr/co/vividnext/sodalive/content/AudioContentServiceTest.kt b/src/test/kotlin/kr/co/vividnext/sodalive/content/AudioContentServiceTest.kt index f650545c..f7dfc6fc 100644 --- a/src/test/kotlin/kr/co/vividnext/sodalive/content/AudioContentServiceTest.kt +++ b/src/test/kotlin/kr/co/vividnext/sodalive/content/AudioContentServiceTest.kt @@ -21,6 +21,7 @@ import kr.co.vividnext.sodalive.i18n.SodaMessageSource import kr.co.vividnext.sodalive.i18n.translation.ResourceTranslationJobScheduler import kr.co.vividnext.sodalive.member.Member import kr.co.vividnext.sodalive.member.block.BlockMemberRepository +import kr.co.vividnext.sodalive.v2.recommend.application.CreatorContentViewHistoryService import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertNull import org.junit.jupiter.api.Assertions.assertThrows @@ -41,6 +42,7 @@ class AudioContentServiceTest { private lateinit var limitedEditionOrderRepository: LimitedEditionOrderRepository private lateinit var themeQueryRepository: AudioContentThemeQueryRepository private lateinit var playbackTrackingRepository: PlaybackTrackingRepository + private lateinit var creatorContentViewHistoryService: CreatorContentViewHistoryService private lateinit var commentRepository: AudioContentCommentRepository private lateinit var audioContentLikeRepository: AudioContentLikeRepository private lateinit var pinContentRepository: PinContentRepository @@ -63,6 +65,7 @@ class AudioContentServiceTest { limitedEditionOrderRepository = Mockito.mock(LimitedEditionOrderRepository::class.java) themeQueryRepository = Mockito.mock(AudioContentThemeQueryRepository::class.java) playbackTrackingRepository = Mockito.mock(PlaybackTrackingRepository::class.java) + creatorContentViewHistoryService = Mockito.mock(CreatorContentViewHistoryService::class.java) commentRepository = Mockito.mock(AudioContentCommentRepository::class.java) audioContentLikeRepository = Mockito.mock(AudioContentLikeRepository::class.java) pinContentRepository = Mockito.mock(PinContentRepository::class.java) @@ -82,6 +85,7 @@ class AudioContentServiceTest { limitedEditionOrderRepository = limitedEditionOrderRepository, themeQueryRepository = themeQueryRepository, playbackTrackingRepository = playbackTrackingRepository, + creatorContentViewHistoryService = creatorContentViewHistoryService, commentRepository = commentRepository, audioContentLikeRepository = audioContentLikeRepository, pinContentRepository = pinContentRepository, @@ -230,6 +234,10 @@ class AudioContentServiceTest { Mockito.verify(repository, Mockito.never()).findSeriesIdByContentId(audioContent.id!!, false) Mockito.verifyNoInteractions(commentRepository) + val recordViewInvocation = Mockito.mockingDetails(creatorContentViewHistoryService).invocations + .single { it.method.name == "recordView" } + assertEquals(viewer.id!!, recordViewInvocation.arguments[0]) + assertEquals(audioContent.id!!, recordViewInvocation.arguments[1]) } private fun createMember(id: Long, nickname: String): Member {