diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/api/home/dto/HomeRecommendationResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/api/home/dto/HomeRecommendationResponse.kt index 0ff4c8d4..cc8495d4 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/v2/api/home/dto/HomeRecommendationResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/api/home/dto/HomeRecommendationResponse.kt @@ -1,5 +1,6 @@ package kr.co.vividnext.sodalive.v2.api.home.dto +import com.fasterxml.jackson.annotation.JsonProperty import java.time.LocalDateTime import java.time.ZoneOffset @@ -67,6 +68,7 @@ data class HomeFirstAudioContentItem( val title: String, val coverImage: String?, val releaseDate: String, + @JsonProperty("isPointAvailable") val isPointAvailable: Boolean ) diff --git a/src/test/kotlin/kr/co/vividnext/sodalive/v2/api/home/dto/HomeRecommendationResponseTest.kt b/src/test/kotlin/kr/co/vividnext/sodalive/v2/api/home/dto/HomeRecommendationResponseTest.kt new file mode 100644 index 00000000..cbeef69d --- /dev/null +++ b/src/test/kotlin/kr/co/vividnext/sodalive/v2/api/home/dto/HomeRecommendationResponseTest.kt @@ -0,0 +1,51 @@ +package kr.co.vividnext.sodalive.v2.api.home.dto + +import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions.assertFalse +import org.junit.jupiter.api.Test + +class HomeRecommendationResponseTest { + private val objectMapper = jacksonObjectMapper() + + @Test + fun shouldSerializeNewHomeRecommendationFields() { + val response = HomeRecommendationResponse( + lives = emptyList(), + banners = emptyList(), + recentlyActiveCreators = emptyList(), + recentDebutCreators = emptyList(), + firstAudioContents = listOf( + HomeFirstAudioContentItem( + contentId = 1L, + creatorId = 2L, + creatorNickname = "creator", + creatorProfileImage = "https://cdn.test/profile/creator.png", + title = "first audio", + coverImage = "https://cdn.test/cover/audio.png", + releaseDate = "2026-06-01T00:00:00Z", + isPointAvailable = true + ) + ), + aiCharacters = listOf( + HomeAiCharacterItem( + characterId = 3L, + name = "character", + description = "description", + profileImage = "https://cdn.test/profile/character.png", + totalChatCount = 4L, + originalWorkTitle = "original" + ) + ), + genreCreators = emptyList(), + cheerCreators = emptyList(), + popularCommunities = emptyList() + ) + + val json = objectMapper.readTree(objectMapper.writeValueAsString(response)) + + assertEquals(true, json["firstAudioContents"][0]["isPointAvailable"].asBoolean()) + assertFalse(json["firstAudioContents"][0].has("pointAvailable")) + assertEquals("https://cdn.test/profile/character.png", json["aiCharacters"][0]["profileImage"].asText()) + } +}