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")) + } +}