From 55b4d9bc8d86b3d24e832f81d819fe8e48101706 Mon Sep 17 00:00:00 2001 From: klaus Date: Sat, 13 Jun 2026 16:21:34 +0900 Subject: [PATCH] =?UTF-8?q?feat(common):=20=ED=81=AC=EB=A6=AC=EC=97=90?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=20=ED=99=9C=EB=8F=99=20=ED=83=80=EC=9E=85?= =?UTF-8?q?=EC=9D=84=20=EA=B3=B5=EC=9A=A9=ED=99=94=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/v2/common/CreatorActivityType.kt | 26 +++++++++++++++++ .../v2/common/CreatorActivityTypeTest.kt | 29 +++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 app/src/main/java/kr/co/vividnext/sodalive/v2/common/CreatorActivityType.kt create mode 100644 app/src/test/java/kr/co/vividnext/sodalive/v2/common/CreatorActivityTypeTest.kt diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/common/CreatorActivityType.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/common/CreatorActivityType.kt new file mode 100644 index 00000000..cd83569b --- /dev/null +++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/common/CreatorActivityType.kt @@ -0,0 +1,26 @@ +package kr.co.vividnext.sodalive.v2.common + +import androidx.annotation.StringRes +import com.google.gson.annotations.SerializedName +import kr.co.vividnext.sodalive.R + +enum class CreatorActivityType( + val code: String, + @StringRes val labelResId: Int +) { + @SerializedName("LIVE") + Live("LIVE", R.string.home_recommendation_activity_live), + + @SerializedName("LIVE_REPLAY") + LiveReplay("LIVE_REPLAY", R.string.home_recommendation_activity_live), + + @SerializedName("AUDIO") + Audio("AUDIO", R.string.home_recommendation_activity_audio), + + @SerializedName("COMMUNITY") + Community("COMMUNITY", R.string.home_recommendation_activity_community); + + companion object { + fun from(code: String): CreatorActivityType? = entries.firstOrNull { it.code.equals(code, ignoreCase = true) } + } +} diff --git a/app/src/test/java/kr/co/vividnext/sodalive/v2/common/CreatorActivityTypeTest.kt b/app/src/test/java/kr/co/vividnext/sodalive/v2/common/CreatorActivityTypeTest.kt new file mode 100644 index 00000000..508fc92d --- /dev/null +++ b/app/src/test/java/kr/co/vividnext/sodalive/v2/common/CreatorActivityTypeTest.kt @@ -0,0 +1,29 @@ +package kr.co.vividnext.sodalive.v2.common + +import kr.co.vividnext.sodalive.R +import org.junit.Assert.assertEquals +import org.junit.Assert.assertNull +import org.junit.Test + +class CreatorActivityTypeTest { + @Test + fun `known activity codes parse ignoring case`() { + assertEquals(CreatorActivityType.Live, CreatorActivityType.from("LIVE")) + assertEquals(CreatorActivityType.LiveReplay, CreatorActivityType.from("live_replay")) + assertEquals(CreatorActivityType.Audio, CreatorActivityType.from("Audio")) + assertEquals(CreatorActivityType.Community, CreatorActivityType.from("community")) + } + + @Test + fun `activity type label resources match home recommendation labels`() { + assertEquals(R.string.home_recommendation_activity_live, CreatorActivityType.Live.labelResId) + assertEquals(R.string.home_recommendation_activity_live, CreatorActivityType.LiveReplay.labelResId) + assertEquals(R.string.home_recommendation_activity_audio, CreatorActivityType.Audio.labelResId) + assertEquals(R.string.home_recommendation_activity_community, CreatorActivityType.Community.labelResId) + } + + @Test + fun `unknown activity code returns null`() { + assertNull(CreatorActivityType.from("UNKNOWN")) + } +}