From f743d090c3334ac2f3acbbcdc316074313a94e82 Mon Sep 17 00:00:00 2001 From: Klaus Date: Fri, 19 Jun 2026 15:18:48 +0900 Subject: [PATCH] =?UTF-8?q?refactor(creator-channel):=20=EC=98=A4=EB=94=94?= =?UTF-8?q?=EC=98=A4=20=EC=BD=98=ED=85=90=EC=B8=A0=20=EC=9D=91=EB=8B=B5?= =?UTF-8?q?=EC=9D=84=20=EA=B3=B5=ED=86=B5=ED=99=94=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/CreatorChannelAudioContentResponse.kt | 44 +++++++++++++++++++ .../home/dto/CreatorChannelHomeResponse.kt | 42 +----------------- .../live/dto/CreatorChannelLiveTabResponse.kt | 42 +----------------- .../domain/CreatorChannelAudioContent.kt | 16 +++++++ ...efaultCreatorChannelHomeQueryRepository.kt | 1 - .../CreatorChannelHomeQueryService.kt | 3 +- .../channel/home/domain/CreatorChannelHome.kt | 17 +------ .../domain/CreatorChannelHomeQueryPolicy.kt | 11 +---- .../port/out/CreatorChannelHomeQueryPort.kt | 1 - ...efaultCreatorChannelLiveQueryRepository.kt | 1 - .../CreatorChannelLiveQueryService.kt | 3 +- .../live/domain/CreatorChannelLiveTab.kt | 17 +------ .../port/out/CreatorChannelLiveQueryPort.kt | 1 - .../web/CreatorChannelHomeControllerTest.kt | 4 +- .../CreatorChannelHomeFacadeTest.kt | 4 +- .../web/CreatorChannelLiveControllerTest.kt | 2 +- .../CreatorChannelLiveFacadeTest.kt | 3 +- .../CreatorChannelHomeQueryServiceTest.kt | 5 +-- .../CreatorChannelHomeQueryPolicyTest.kt | 26 +---------- .../CreatorChannelLiveQueryServiceTest.kt | 1 - 20 files changed, 74 insertions(+), 170 deletions(-) create mode 100644 src/main/kotlin/kr/co/vividnext/sodalive/v2/api/creator/channel/common/dto/CreatorChannelAudioContentResponse.kt create mode 100644 src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/common/domain/CreatorChannelAudioContent.kt diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/api/creator/channel/common/dto/CreatorChannelAudioContentResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/api/creator/channel/common/dto/CreatorChannelAudioContentResponse.kt new file mode 100644 index 00000000..b1d9c7f4 --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/api/creator/channel/common/dto/CreatorChannelAudioContentResponse.kt @@ -0,0 +1,44 @@ +package kr.co.vividnext.sodalive.v2.api.creator.channel.common.dto + +import com.fasterxml.jackson.annotation.JsonProperty +import kr.co.vividnext.sodalive.v2.creator.channel.common.domain.CreatorChannelAudioContent + +data class CreatorChannelAudioContentResponse( + val audioContentId: Long, + val title: String, + val duration: String?, + val imageUrl: String?, + val price: Int, + @JsonProperty("isAdult") + val isAdult: Boolean, + @JsonProperty("isPointAvailable") + val isPointAvailable: Boolean, + @JsonProperty("isFirstContent") + val isFirstContent: Boolean, + val seriesName: String?, + @JsonProperty("isOriginalSeries") + val isOriginalSeries: Boolean?, + @JsonProperty("isOwned") + val isOwned: Boolean, + @JsonProperty("isRented") + val isRented: Boolean +) { + companion object { + fun from(audioContent: CreatorChannelAudioContent): CreatorChannelAudioContentResponse { + return CreatorChannelAudioContentResponse( + audioContentId = audioContent.audioContentId, + title = audioContent.title, + duration = audioContent.duration, + imageUrl = audioContent.imageUrl, + price = audioContent.price, + isAdult = audioContent.isAdult, + isPointAvailable = audioContent.isPointAvailable, + isFirstContent = audioContent.isFirstContent, + seriesName = audioContent.seriesName, + isOriginalSeries = audioContent.isOriginalSeries, + isOwned = audioContent.isOwned, + isRented = audioContent.isRented + ) + } + } +} diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/api/creator/channel/home/dto/CreatorChannelHomeResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/api/creator/channel/home/dto/CreatorChannelHomeResponse.kt index dc853d73..8eb6214a 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/v2/api/creator/channel/home/dto/CreatorChannelHomeResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/api/creator/channel/home/dto/CreatorChannelHomeResponse.kt @@ -1,9 +1,9 @@ package kr.co.vividnext.sodalive.v2.api.creator.channel.home.dto import com.fasterxml.jackson.annotation.JsonProperty +import kr.co.vividnext.sodalive.v2.api.creator.channel.common.dto.CreatorChannelAudioContentResponse import kr.co.vividnext.sodalive.v2.common.domain.CreatorActivityType import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelActivity -import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelAudioContent import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelCommunityPost import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelCreator import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelDonation @@ -108,46 +108,6 @@ data class CreatorChannelLiveResponse( } } -data class CreatorChannelAudioContentResponse( - val audioContentId: Long, - val title: String, - val duration: String?, - val imageUrl: String?, - val price: Int, - @JsonProperty("isAdult") - val isAdult: Boolean, - @JsonProperty("isPointAvailable") - val isPointAvailable: Boolean, - @JsonProperty("isFirstContent") - val isFirstContent: Boolean, - val seriesName: String?, - @JsonProperty("isOriginalSeries") - val isOriginalSeries: Boolean?, - @JsonProperty("isOwned") - val isOwned: Boolean, - @JsonProperty("isRented") - val isRented: Boolean -) { - companion object { - fun from(audioContent: CreatorChannelAudioContent): CreatorChannelAudioContentResponse { - return CreatorChannelAudioContentResponse( - audioContentId = audioContent.audioContentId, - title = audioContent.title, - duration = audioContent.duration, - imageUrl = audioContent.imageUrl, - price = audioContent.price, - isAdult = audioContent.isAdult, - isPointAvailable = audioContent.isPointAvailable, - isFirstContent = audioContent.isFirstContent, - seriesName = audioContent.seriesName, - isOriginalSeries = audioContent.isOriginalSeries, - isOwned = audioContent.isOwned, - isRented = audioContent.isRented - ) - } - } -} - data class CreatorChannelDonationResponse( val nickname: String, val profileImageUrl: String, diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/api/creator/channel/live/dto/CreatorChannelLiveTabResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/api/creator/channel/live/dto/CreatorChannelLiveTabResponse.kt index acebc474..0c773db1 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/v2/api/creator/channel/live/dto/CreatorChannelLiveTabResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/api/creator/channel/live/dto/CreatorChannelLiveTabResponse.kt @@ -1,8 +1,8 @@ package kr.co.vividnext.sodalive.v2.api.creator.channel.live.dto import com.fasterxml.jackson.annotation.JsonProperty +import kr.co.vividnext.sodalive.v2.api.creator.channel.common.dto.CreatorChannelAudioContentResponse import kr.co.vividnext.sodalive.v2.common.domain.ContentSort -import kr.co.vividnext.sodalive.v2.creator.channel.live.domain.CreatorChannelAudioContent import kr.co.vividnext.sodalive.v2.creator.channel.live.domain.CreatorChannelLive import kr.co.vividnext.sodalive.v2.creator.channel.live.domain.CreatorChannelLiveTab import java.time.LocalDateTime @@ -33,46 +33,6 @@ data class CreatorChannelLiveTabResponse( } } -data class CreatorChannelAudioContentResponse( - val audioContentId: Long, - val title: String, - val duration: String?, - val imageUrl: String?, - val price: Int, - @JsonProperty("isAdult") - val isAdult: Boolean, - @JsonProperty("isPointAvailable") - val isPointAvailable: Boolean, - @JsonProperty("isFirstContent") - val isFirstContent: Boolean, - val seriesName: String?, - @JsonProperty("isOriginalSeries") - val isOriginalSeries: Boolean?, - @JsonProperty("isOwned") - val isOwned: Boolean, - @JsonProperty("isRented") - val isRented: Boolean -) { - companion object { - fun from(content: CreatorChannelAudioContent): CreatorChannelAudioContentResponse { - return CreatorChannelAudioContentResponse( - audioContentId = content.audioContentId, - title = content.title, - duration = content.duration, - imageUrl = content.imageUrl, - price = content.price, - isAdult = content.isAdult, - isPointAvailable = content.isPointAvailable, - isFirstContent = content.isFirstContent, - seriesName = content.seriesName, - isOriginalSeries = content.isOriginalSeries, - isOwned = content.isOwned, - isRented = content.isRented - ) - } - } -} - data class CreatorChannelLiveResponse( val liveId: Long, val title: String, diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/common/domain/CreatorChannelAudioContent.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/common/domain/CreatorChannelAudioContent.kt new file mode 100644 index 00000000..af8aeac2 --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/common/domain/CreatorChannelAudioContent.kt @@ -0,0 +1,16 @@ +package kr.co.vividnext.sodalive.v2.creator.channel.common.domain + +data class CreatorChannelAudioContent( + val audioContentId: Long, + val title: String, + val duration: String?, + val imageUrl: String?, + val price: Int, + val isAdult: Boolean, + val isPointAvailable: Boolean, + val isFirstContent: Boolean, + val seriesName: String?, + val isOriginalSeries: Boolean?, + val isOwned: Boolean, + val isRented: Boolean +) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/home/adapter/out/persistence/DefaultCreatorChannelHomeQueryRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/home/adapter/out/persistence/DefaultCreatorChannelHomeQueryRepository.kt index d1a7c754..89494556 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/home/adapter/out/persistence/DefaultCreatorChannelHomeQueryRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/home/adapter/out/persistence/DefaultCreatorChannelHomeQueryRepository.kt @@ -572,7 +572,6 @@ class DefaultCreatorChannelHomeQueryRepository( isAdult = get(audioContent.isAdult)!!, isPointAvailable = get(audioContent.isPointAvailable)!!, isFirstContent = firstContentId == audioContentId, - publishedAt = get(audioContent.releaseDate)!!, seriesName = seriesSummary?.title, isOriginalSeries = seriesSummary?.isOriginal, isOwned = orderState?.isOwned ?: false, diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/home/application/CreatorChannelHomeQueryService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/home/application/CreatorChannelHomeQueryService.kt index 4abaee51..4139fee9 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/home/application/CreatorChannelHomeQueryService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/home/application/CreatorChannelHomeQueryService.kt @@ -8,8 +8,8 @@ import kr.co.vividnext.sodalive.member.Member import kr.co.vividnext.sodalive.member.MemberRole import kr.co.vividnext.sodalive.member.contentpreference.MemberContentPreferenceService import kr.co.vividnext.sodalive.member.contentpreference.isAdultVisibleByPolicy +import kr.co.vividnext.sodalive.v2.creator.channel.common.domain.CreatorChannelAudioContent import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelActivity -import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelAudioContent import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelCommunityPost import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelCreator import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelDonation @@ -178,7 +178,6 @@ class CreatorChannelHomeQueryService( isAdult = isAdult, isPointAvailable = isPointAvailable, isFirstContent = isFirstContent, - publishedAt = publishedAt, seriesName = seriesName, isOriginalSeries = isOriginalSeries, isOwned = isOwned, diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/home/domain/CreatorChannelHome.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/home/domain/CreatorChannelHome.kt index d046d908..ec2adc7b 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/home/domain/CreatorChannelHome.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/home/domain/CreatorChannelHome.kt @@ -1,6 +1,7 @@ package kr.co.vividnext.sodalive.v2.creator.channel.home.domain import kr.co.vividnext.sodalive.v2.common.domain.CreatorActivityType +import kr.co.vividnext.sodalive.v2.creator.channel.common.domain.CreatorChannelAudioContent import java.time.LocalDateTime data class CreatorChannelHome( @@ -40,22 +41,6 @@ data class CreatorChannelLive( val isAdult: Boolean ) -data class CreatorChannelAudioContent( - val audioContentId: Long, - val title: String, - val duration: String?, - val imageUrl: String?, - val price: Int, - val isAdult: Boolean, - val isPointAvailable: Boolean, - val isFirstContent: Boolean, - val publishedAt: LocalDateTime, - val seriesName: String?, - val isOriginalSeries: Boolean?, - val isOwned: Boolean, - val isRented: Boolean -) - data class CreatorChannelDonation( val nickname: String, val profileImageUrl: String, diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/home/domain/CreatorChannelHomeQueryPolicy.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/home/domain/CreatorChannelHomeQueryPolicy.kt index 67372ba8..0790a4e3 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/home/domain/CreatorChannelHomeQueryPolicy.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/home/domain/CreatorChannelHomeQueryPolicy.kt @@ -1,6 +1,7 @@ package kr.co.vividnext.sodalive.v2.creator.channel.home.domain import kr.co.vividnext.sodalive.v2.common.domain.CreatorActivityType +import kr.co.vividnext.sodalive.v2.creator.channel.common.domain.CreatorChannelAudioContent import org.springframework.stereotype.Component import java.time.LocalDateTime @@ -25,16 +26,6 @@ class CreatorChannelHomeQueryPolicy { return audioContents.filter { it.audioContentId != latestAudioContentId } } - fun markFirstAudioContent(audioContents: List): List { - val firstAudioContentId = audioContents - .minWithOrNull(compareBy { it.publishedAt }.thenBy { it.audioContentId }) - ?.audioContentId - - return audioContents.map { audioContent -> - audioContent.copy(isFirstContent = audioContent.audioContentId == firstAudioContentId) - } - } - private fun CreatorActivityType.scheduleOrder(): Int { return if (this == CreatorActivityType.LIVE) 0 else 1 } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/home/port/out/CreatorChannelHomeQueryPort.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/home/port/out/CreatorChannelHomeQueryPort.kt index 49f54187..ccd59f7b 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/home/port/out/CreatorChannelHomeQueryPort.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/home/port/out/CreatorChannelHomeQueryPort.kt @@ -109,7 +109,6 @@ data class CreatorChannelAudioContentRecord( val isAdult: Boolean, val isPointAvailable: Boolean, val isFirstContent: Boolean, - val publishedAt: LocalDateTime, val seriesName: String?, val isOriginalSeries: Boolean?, val isOwned: Boolean, diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/live/adapter/out/persistence/DefaultCreatorChannelLiveQueryRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/live/adapter/out/persistence/DefaultCreatorChannelLiveQueryRepository.kt index f4ae944e..514b48bc 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/live/adapter/out/persistence/DefaultCreatorChannelLiveQueryRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/live/adapter/out/persistence/DefaultCreatorChannelLiveQueryRepository.kt @@ -261,7 +261,6 @@ class DefaultCreatorChannelLiveQueryRepository( isAdult = get(audioContent.isAdult)!!, isPointAvailable = get(audioContent.isPointAvailable)!!, isFirstContent = firstContentId == audioContentId, - publishedAt = get(audioContent.releaseDate)!!, seriesName = seriesSummary?.title, isOriginalSeries = seriesSummary?.isOriginal, isOwned = orderState?.isOwned ?: false, diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/live/application/CreatorChannelLiveQueryService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/live/application/CreatorChannelLiveQueryService.kt index a07e3afb..5a57896f 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/live/application/CreatorChannelLiveQueryService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/live/application/CreatorChannelLiveQueryService.kt @@ -9,7 +9,7 @@ import kr.co.vividnext.sodalive.member.MemberRole import kr.co.vividnext.sodalive.member.contentpreference.MemberContentPreferenceService import kr.co.vividnext.sodalive.member.contentpreference.isAdultVisibleByPolicy import kr.co.vividnext.sodalive.v2.common.domain.ContentSort -import kr.co.vividnext.sodalive.v2.creator.channel.live.domain.CreatorChannelAudioContent +import kr.co.vividnext.sodalive.v2.creator.channel.common.domain.CreatorChannelAudioContent import kr.co.vividnext.sodalive.v2.creator.channel.live.domain.CreatorChannelLive import kr.co.vividnext.sodalive.v2.creator.channel.live.domain.CreatorChannelLiveReplayQueryPolicy import kr.co.vividnext.sodalive.v2.creator.channel.live.domain.CreatorChannelLiveTab @@ -122,7 +122,6 @@ class CreatorChannelLiveQueryService( isAdult = isAdult, isPointAvailable = isPointAvailable, isFirstContent = isFirstContent, - publishedAt = publishedAt, seriesName = seriesName, isOriginalSeries = isOriginalSeries, isOwned = isOwned, diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/live/domain/CreatorChannelLiveTab.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/live/domain/CreatorChannelLiveTab.kt index bedfa2e0..1557728d 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/live/domain/CreatorChannelLiveTab.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/live/domain/CreatorChannelLiveTab.kt @@ -1,6 +1,7 @@ package kr.co.vividnext.sodalive.v2.creator.channel.live.domain import kr.co.vividnext.sodalive.v2.common.domain.ContentSort +import kr.co.vividnext.sodalive.v2.creator.channel.common.domain.CreatorChannelAudioContent import java.time.LocalDateTime data class CreatorChannelLiveTab( @@ -20,19 +21,3 @@ data class CreatorChannelLive( val price: Int, val isAdult: Boolean ) - -data class CreatorChannelAudioContent( - val audioContentId: Long, - val title: String, - val duration: String?, - val imageUrl: String?, - val price: Int, - val isAdult: Boolean, - val isPointAvailable: Boolean, - val isFirstContent: Boolean, - val publishedAt: LocalDateTime, - val seriesName: String?, - val isOriginalSeries: Boolean?, - val isOwned: Boolean, - val isRented: Boolean -) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/live/port/out/CreatorChannelLiveQueryPort.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/live/port/out/CreatorChannelLiveQueryPort.kt index c9fd3631..86cafd42 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/live/port/out/CreatorChannelLiveQueryPort.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/live/port/out/CreatorChannelLiveQueryPort.kt @@ -60,7 +60,6 @@ data class CreatorChannelAudioContentRecord( val isAdult: Boolean, val isPointAvailable: Boolean, val isFirstContent: Boolean, - val publishedAt: LocalDateTime, val seriesName: String?, val isOriginalSeries: Boolean?, val isOwned: Boolean, diff --git a/src/test/kotlin/kr/co/vividnext/sodalive/v2/api/creator/channel/home/adapter/in/web/CreatorChannelHomeControllerTest.kt b/src/test/kotlin/kr/co/vividnext/sodalive/v2/api/creator/channel/home/adapter/in/web/CreatorChannelHomeControllerTest.kt index 43ec3fd4..96f2e05f 100644 --- a/src/test/kotlin/kr/co/vividnext/sodalive/v2/api/creator/channel/home/adapter/in/web/CreatorChannelHomeControllerTest.kt +++ b/src/test/kotlin/kr/co/vividnext/sodalive/v2/api/creator/channel/home/adapter/in/web/CreatorChannelHomeControllerTest.kt @@ -9,8 +9,8 @@ import kr.co.vividnext.sodalive.member.MemberRole import kr.co.vividnext.sodalive.v2.api.creator.channel.home.application.CreatorChannelHomeFacade import kr.co.vividnext.sodalive.v2.api.creator.channel.home.dto.CreatorChannelHomeResponse import kr.co.vividnext.sodalive.v2.common.domain.CreatorActivityType +import kr.co.vividnext.sodalive.v2.creator.channel.common.domain.CreatorChannelAudioContent import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelActivity -import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelAudioContent import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelCommunityPost import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelCreator import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelDonation @@ -198,7 +198,6 @@ class CreatorChannelHomeControllerTest @Autowired constructor( isAdult = true, isPointAvailable = true, isFirstContent = true, - publishedAt = LocalDateTime.of(2026, 6, 11, 1, 0), seriesName = "series", isOriginalSeries = true, isOwned = true, @@ -233,7 +232,6 @@ class CreatorChannelHomeControllerTest @Autowired constructor( isAdult = false, isPointAvailable = false, isFirstContent = false, - publishedAt = LocalDateTime.of(2026, 6, 10, 1, 0), seriesName = null, isOriginalSeries = null, isOwned = false, diff --git a/src/test/kotlin/kr/co/vividnext/sodalive/v2/api/creator/channel/home/application/CreatorChannelHomeFacadeTest.kt b/src/test/kotlin/kr/co/vividnext/sodalive/v2/api/creator/channel/home/application/CreatorChannelHomeFacadeTest.kt index 67106f4d..8b5751eb 100644 --- a/src/test/kotlin/kr/co/vividnext/sodalive/v2/api/creator/channel/home/application/CreatorChannelHomeFacadeTest.kt +++ b/src/test/kotlin/kr/co/vividnext/sodalive/v2/api/creator/channel/home/application/CreatorChannelHomeFacadeTest.kt @@ -3,9 +3,9 @@ package kr.co.vividnext.sodalive.v2.api.creator.channel.home.application import kr.co.vividnext.sodalive.member.Member import kr.co.vividnext.sodalive.member.MemberRole import kr.co.vividnext.sodalive.v2.common.domain.CreatorActivityType +import kr.co.vividnext.sodalive.v2.creator.channel.common.domain.CreatorChannelAudioContent import kr.co.vividnext.sodalive.v2.creator.channel.home.application.CreatorChannelHomeQueryService import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelActivity -import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelAudioContent import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelCommunityPost import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelCreator import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelDonation @@ -128,7 +128,6 @@ class CreatorChannelHomeFacadeTest { isAdult = true, isPointAvailable = true, isFirstContent = true, - publishedAt = LocalDateTime.of(2026, 6, 11, 1, 0), seriesName = "series", isOriginalSeries = true, isOwned = true, @@ -163,7 +162,6 @@ class CreatorChannelHomeFacadeTest { isAdult = false, isPointAvailable = false, isFirstContent = false, - publishedAt = LocalDateTime.of(2026, 6, 10, 1, 0), seriesName = null, isOriginalSeries = null, isOwned = false, diff --git a/src/test/kotlin/kr/co/vividnext/sodalive/v2/api/creator/channel/live/adapter/in/web/CreatorChannelLiveControllerTest.kt b/src/test/kotlin/kr/co/vividnext/sodalive/v2/api/creator/channel/live/adapter/in/web/CreatorChannelLiveControllerTest.kt index 1a7c82b3..ff50925d 100644 --- a/src/test/kotlin/kr/co/vividnext/sodalive/v2/api/creator/channel/live/adapter/in/web/CreatorChannelLiveControllerTest.kt +++ b/src/test/kotlin/kr/co/vividnext/sodalive/v2/api/creator/channel/live/adapter/in/web/CreatorChannelLiveControllerTest.kt @@ -6,8 +6,8 @@ import kr.co.vividnext.sodalive.i18n.SodaMessageSource import kr.co.vividnext.sodalive.member.Member import kr.co.vividnext.sodalive.member.MemberAdapter import kr.co.vividnext.sodalive.member.MemberRole +import kr.co.vividnext.sodalive.v2.api.creator.channel.common.dto.CreatorChannelAudioContentResponse import kr.co.vividnext.sodalive.v2.api.creator.channel.live.application.CreatorChannelLiveFacade -import kr.co.vividnext.sodalive.v2.api.creator.channel.live.dto.CreatorChannelAudioContentResponse import kr.co.vividnext.sodalive.v2.api.creator.channel.live.dto.CreatorChannelLiveResponse import kr.co.vividnext.sodalive.v2.api.creator.channel.live.dto.CreatorChannelLiveTabResponse import kr.co.vividnext.sodalive.v2.common.domain.ContentSort diff --git a/src/test/kotlin/kr/co/vividnext/sodalive/v2/api/creator/channel/live/application/CreatorChannelLiveFacadeTest.kt b/src/test/kotlin/kr/co/vividnext/sodalive/v2/api/creator/channel/live/application/CreatorChannelLiveFacadeTest.kt index 337332e7..e17f02a0 100644 --- a/src/test/kotlin/kr/co/vividnext/sodalive/v2/api/creator/channel/live/application/CreatorChannelLiveFacadeTest.kt +++ b/src/test/kotlin/kr/co/vividnext/sodalive/v2/api/creator/channel/live/application/CreatorChannelLiveFacadeTest.kt @@ -3,8 +3,8 @@ package kr.co.vividnext.sodalive.v2.api.creator.channel.live.application import kr.co.vividnext.sodalive.member.Member import kr.co.vividnext.sodalive.member.MemberRole import kr.co.vividnext.sodalive.v2.common.domain.ContentSort +import kr.co.vividnext.sodalive.v2.creator.channel.common.domain.CreatorChannelAudioContent import kr.co.vividnext.sodalive.v2.creator.channel.live.application.CreatorChannelLiveQueryService -import kr.co.vividnext.sodalive.v2.creator.channel.live.domain.CreatorChannelAudioContent import kr.co.vividnext.sodalive.v2.creator.channel.live.domain.CreatorChannelLive import kr.co.vividnext.sodalive.v2.creator.channel.live.domain.CreatorChannelLiveTab import kr.co.vividnext.sodalive.v2.creator.channel.live.domain.CreatorChannelPage @@ -86,7 +86,6 @@ class CreatorChannelLiveFacadeTest { isAdult = false, isPointAvailable = true, isFirstContent = true, - publishedAt = LocalDateTime.of(2026, 6, 16, 1, 0), seriesName = "series", isOriginalSeries = true, isOwned = true, diff --git a/src/test/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/home/application/CreatorChannelHomeQueryServiceTest.kt b/src/test/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/home/application/CreatorChannelHomeQueryServiceTest.kt index 0a8bb5a4..07d8be61 100644 --- a/src/test/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/home/application/CreatorChannelHomeQueryServiceTest.kt +++ b/src/test/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/home/application/CreatorChannelHomeQueryServiceTest.kt @@ -15,8 +15,8 @@ import kr.co.vividnext.sodalive.member.contentpreference.MemberContentPreference import kr.co.vividnext.sodalive.member.contentpreference.ViewerContentPreference import kr.co.vividnext.sodalive.v2.api.creator.channel.home.dto.CreatorChannelHomeResponse import kr.co.vividnext.sodalive.v2.common.domain.CreatorActivityType +import kr.co.vividnext.sodalive.v2.creator.channel.common.domain.CreatorChannelAudioContent import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelActivity -import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelAudioContent import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelCommunityPost import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelCreator import kr.co.vividnext.sodalive.v2.creator.channel.home.domain.CreatorChannelDonation @@ -307,7 +307,6 @@ class CreatorChannelHomeQueryServiceTest { isAdult = true, isPointAvailable = true, isFirstContent = true, - publishedAt = LocalDateTime.of(2026, 6, 11, 1, 0), seriesName = "series", isOriginalSeries = true, isOwned = true, @@ -342,7 +341,6 @@ class CreatorChannelHomeQueryServiceTest { isAdult = false, isPointAvailable = false, isFirstContent = false, - publishedAt = LocalDateTime.of(2026, 6, 10, 1, 0), seriesName = null, isOriginalSeries = null, isOwned = false, @@ -646,7 +644,6 @@ private class FakeCreatorChannelHomeQueryPort : CreatorChannelHomeQueryPort { isAdult = false, isPointAvailable = true, isFirstContent = false, - publishedAt = LocalDateTime.of(2026, 6, 10, 0, audioContentId.toInt() % 60), seriesName = null, isOriginalSeries = null, isOwned = audioContentId == 201L || audioContentId == 202L, diff --git a/src/test/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/home/domain/CreatorChannelHomeQueryPolicyTest.kt b/src/test/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/home/domain/CreatorChannelHomeQueryPolicyTest.kt index 80a29e00..348ab851 100644 --- a/src/test/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/home/domain/CreatorChannelHomeQueryPolicyTest.kt +++ b/src/test/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/home/domain/CreatorChannelHomeQueryPolicyTest.kt @@ -1,9 +1,8 @@ package kr.co.vividnext.sodalive.v2.creator.channel.home.domain import kr.co.vividnext.sodalive.v2.common.domain.CreatorActivityType +import kr.co.vividnext.sodalive.v2.creator.channel.common.domain.CreatorChannelAudioContent import org.junit.jupiter.api.Assertions.assertEquals -import org.junit.jupiter.api.Assertions.assertFalse -import org.junit.jupiter.api.Assertions.assertTrue import org.junit.jupiter.api.DisplayName import org.junit.jupiter.api.Test import java.time.LocalDateTime @@ -80,23 +79,6 @@ class CreatorChannelHomeQueryPolicyTest { assertEquals(listOf(1L, 3L), filtered.map { it.audioContentId }) } - @Test - @DisplayName("오디오 콘텐츠의 첫 공개 콘텐츠 여부는 공개 시각 오름차순, 동일 시각이면 id 오름차순으로 판정한다") - fun shouldMarkFirstAudioContentByPublishedAtAndId() { - val publishedAt = LocalDateTime.of(2026, 6, 12, 10, 0) - val audioContents = listOf( - audioContent(3L, publishedAt = publishedAt.plusDays(1)), - audioContent(2L, publishedAt = publishedAt), - audioContent(1L, publishedAt = publishedAt) - ) - - val marked = policy.markFirstAudioContent(audioContents) - - assertTrue(marked.first { it.audioContentId == 1L }.isFirstContent) - assertFalse(marked.first { it.audioContentId == 2L }.isFirstContent) - assertFalse(marked.first { it.audioContentId == 3L }.isFirstContent) - } - private fun schedule( targetId: Long, scheduledAt: LocalDateTime, @@ -112,10 +94,7 @@ class CreatorChannelHomeQueryPolicyTest { ) } - private fun audioContent( - audioContentId: Long, - publishedAt: LocalDateTime = LocalDateTime.of(2026, 6, 12, 10, 0) - ): CreatorChannelAudioContent { + private fun audioContent(audioContentId: Long): CreatorChannelAudioContent { return CreatorChannelAudioContent( audioContentId = audioContentId, title = "audio-$audioContentId", @@ -125,7 +104,6 @@ class CreatorChannelHomeQueryPolicyTest { isAdult = false, isPointAvailable = false, isFirstContent = false, - publishedAt = publishedAt, seriesName = null, isOriginalSeries = null, isOwned = false, diff --git a/src/test/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/live/application/CreatorChannelLiveQueryServiceTest.kt b/src/test/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/live/application/CreatorChannelLiveQueryServiceTest.kt index c251c287..c669f7e5 100644 --- a/src/test/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/live/application/CreatorChannelLiveQueryServiceTest.kt +++ b/src/test/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/live/application/CreatorChannelLiveQueryServiceTest.kt @@ -388,7 +388,6 @@ private fun audioContentRecord(audioContentId: Long): CreatorChannelAudioContent isAdult = false, isPointAvailable = true, isFirstContent = audioContentId == 1L, - publishedAt = LocalDateTime.of(2026, 6, 16, 10, 0), seriesName = "series", isOriginalSeries = true, isOwned = audioContentId == 1L,