From 34e05a577e8d7df72a31b50541fe3861d1177409 Mon Sep 17 00:00:00 2001 From: Klaus Date: Mon, 22 Jun 2026 17:59:09 +0900 Subject: [PATCH] =?UTF-8?q?feat(creator-channel):=20=ED=9B=84=EC=9B=90=20?= =?UTF-8?q?=ED=83=AD=20=EC=A1=B0=ED=9A=8C=20=EC=84=9C=EB=B9=84=EC=8A=A4=20?= =?UTF-8?q?=EB=B3=B4=ED=98=B8=20=EB=8F=99=EC=9E=91=EC=9D=84=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CreatorChannelDonationQueryService.kt | 20 ++++++++++ .../CreatorChannelDonationQueryServiceTest.kt | 39 +++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/donation/application/CreatorChannelDonationQueryService.kt create mode 100644 src/test/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/donation/application/CreatorChannelDonationQueryServiceTest.kt diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/donation/application/CreatorChannelDonationQueryService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/donation/application/CreatorChannelDonationQueryService.kt new file mode 100644 index 00000000..e7527729 --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/donation/application/CreatorChannelDonationQueryService.kt @@ -0,0 +1,20 @@ +package kr.co.vividnext.sodalive.v2.creator.channel.donation.application + +import kr.co.vividnext.sodalive.common.SodaException +import kr.co.vividnext.sodalive.member.Member +import kr.co.vividnext.sodalive.v2.creator.channel.donation.domain.CreatorChannelDonationTab +import org.springframework.stereotype.Service +import java.time.LocalDateTime + +@Service +class CreatorChannelDonationQueryService { + fun getDonationTab( + creatorId: Long, + viewer: Member, + page: Int?, + size: Int?, + now: LocalDateTime + ): CreatorChannelDonationTab { + throw SodaException(messageKey = "common.error.invalid_request") + } +} diff --git a/src/test/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/donation/application/CreatorChannelDonationQueryServiceTest.kt b/src/test/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/donation/application/CreatorChannelDonationQueryServiceTest.kt new file mode 100644 index 00000000..203b79c5 --- /dev/null +++ b/src/test/kotlin/kr/co/vividnext/sodalive/v2/creator/channel/donation/application/CreatorChannelDonationQueryServiceTest.kt @@ -0,0 +1,39 @@ +package kr.co.vividnext.sodalive.v2.creator.channel.donation.application + +import kr.co.vividnext.sodalive.common.SodaException +import kr.co.vividnext.sodalive.member.Member +import kr.co.vividnext.sodalive.member.MemberRole +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions.assertThrows +import org.junit.jupiter.api.DisplayName +import org.junit.jupiter.api.Test +import java.time.LocalDateTime + +class CreatorChannelDonationQueryServiceTest { + @Test + @DisplayName("후원 탭 query service placeholder는 내부 예외 대신 명시적인 API 오류를 던진다") + fun shouldThrowSodaExceptionUntilPhase2Implementation() { + val service = CreatorChannelDonationQueryService() + + val exception = assertThrows(SodaException::class.java) { + service.getDonationTab( + creatorId = 1L, + viewer = createMember(id = 10L), + page = 0, + size = 20, + now = LocalDateTime.of(2026, 6, 22, 3, 0) + ) + } + + assertEquals("common.error.invalid_request", exception.messageKey) + } + + private fun createMember(id: Long): Member { + return Member( + email = "viewer$id@test.com", + password = "password", + nickname = "viewer$id", + role = MemberRole.USER + ).apply { this.id = id } + } +}