diff --git a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/ui/CreatorChannelHomeSectionAdapter.kt b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/ui/CreatorChannelHomeSectionAdapter.kt
index 081aaaad..9b5205b2 100644
--- a/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/ui/CreatorChannelHomeSectionAdapter.kt
+++ b/app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/ui/CreatorChannelHomeSectionAdapter.kt
@@ -66,7 +66,6 @@ class CreatorChannelHomeSectionAdapter(
private val onSeriesClick: (CreatorChannelSeriesResponse) -> Unit
) : RecyclerView.ViewHolder(view) {
private val title: TextView? = view.findViewById(R.id.tv_section_title)
- private val sectionItems: LinearLayout? = view.findViewById(R.id.ll_section_items)
private val currentLiveTitle: TextView? = view.findViewById(R.id.tv_current_live_title)
private val currentLiveStartTime: TextView? = view.findViewById(R.id.tv_current_live_start_time)
private val currentLivePrice: TextView? = view.findViewById(R.id.tv_current_live_price)
@@ -90,6 +89,14 @@ class CreatorChannelHomeSectionAdapter(
private val fanTalkTotalCount: TextView? = view.findViewById(R.id.tv_fantalk_total_count)
private val fanTalkProfile: ImageView? = view.findViewById(R.id.iv_fantalk_profile)
private val fanTalkContent: TextView? = view.findViewById(R.id.tv_fantalk_content)
+ private val introduceBody: TextView? = view.findViewById(R.id.tv_introduce_body)
+ private val activityDebutValue: TextView? = view.findViewById(R.id.tv_activity_debut_value)
+ private val activityLiveCountValue: TextView? = view.findViewById(R.id.tv_activity_live_count_value)
+ private val activityLiveDurationValue: TextView? = view.findViewById(R.id.tv_activity_live_duration_value)
+ private val activityLiveContributorValue: TextView? = view.findViewById(R.id.tv_activity_live_contributor_value)
+ private val activityAudioCountValue: TextView? = view.findViewById(R.id.tv_activity_audio_count_value)
+ private val activitySeriesCountValue: TextView? = view.findViewById(R.id.tv_activity_series_count_value)
+ private val snsItems: LinearLayout? = view.findViewById(R.id.ll_sns_items)
private val audioContentGridAdapter = AudioContentGridAdapter(
itemWidth = calculateCreatorChannelAudioItemWidthDp(itemView.resources.configuration.screenWidthDp).dp(),
onAudioContentClick = onAudioContentClick
@@ -101,13 +108,13 @@ class CreatorChannelHomeSectionAdapter(
fun bind(item: CreatorChannelHomeSection) {
title?.setText(item.titleResId)
- sectionItems?.removeAllViews()
donationItems?.removeAllViews()
noticeItems?.removeAllViews()
scheduleTimeline?.removeAllViews()
scheduleItems?.removeAllViews()
seriesItems?.removeAllViews()
communityItems?.removeAllViews()
+ snsItems?.removeAllViews()
when (item) {
is CreatorChannelHomeSection.CurrentLive -> bindCurrentLive(item)
is CreatorChannelHomeSection.LatestAudioContent -> bindLatestAudioContent(item)
@@ -387,147 +394,56 @@ class CreatorChannelHomeSectionAdapter(
)
private fun bindIntroduce(item: CreatorChannelHomeSection.Introduce) {
- addTextCard(title = item.introduce, body = "", imageUrl = null)
+ introduceBody?.text = item.introduce
}
private fun bindActivity(item: CreatorChannelHomeSection.Activity) {
val activity = item.activity
- addActivityRow(
- itemView.context.getString(R.string.creator_channel_activity_debut),
- formatDebutActivityValue(activity.debutDateUtc, activity.dDay)
+ activityDebutValue?.text = formatDebutActivityValue(activity.debutDateUtc, activity.dDay)
+ activityLiveCountValue?.text = itemView.context.getString(
+ R.string.creator_channel_activity_live_count_format,
+ activity.liveCount
)
- addActivityRow(
- itemView.context.getString(R.string.creator_channel_activity_live_count),
- itemView.context.getString(R.string.creator_channel_activity_live_count_format, activity.liveCount)
+ activityLiveDurationValue?.text = itemView.context.getString(
+ R.string.creator_channel_activity_live_duration_format,
+ activity.liveDurationHours
)
- addActivityRow(
- itemView.context.getString(R.string.creator_channel_activity_live_duration),
- itemView.context.getString(
- R.string.creator_channel_activity_live_duration_format,
- activity.liveDurationHours
- )
+ activityLiveContributorValue?.text = itemView.context.getString(
+ R.string.creator_channel_activity_live_contributor_format,
+ activity.liveContributorCount
)
- addActivityRow(
- itemView.context.getString(R.string.creator_channel_activity_live_contributor),
- itemView.context.getString(
- R.string.creator_channel_activity_live_contributor_format,
- activity.liveContributorCount
- )
+ activityAudioCountValue?.text = itemView.context.getString(
+ R.string.creator_channel_activity_audio_count_format,
+ activity.audioContentCount
)
- addActivityRow(
- itemView.context.getString(R.string.creator_channel_activity_audio_count),
- itemView.context.getString(R.string.creator_channel_activity_audio_count_format, activity.audioContentCount)
- )
- addActivityRow(
- itemView.context.getString(R.string.creator_channel_activity_series_count),
- itemView.context.getString(R.string.creator_channel_activity_series_count_format, activity.seriesCount)
+ activitySeriesCountValue?.text = itemView.context.getString(
+ R.string.creator_channel_activity_series_count_format,
+ activity.seriesCount
)
}
private fun bindSns(item: CreatorChannelHomeSection.Sns) {
- val row = LinearLayout(itemView.context).apply {
- orientation = LinearLayout.HORIZONTAL
- }
item.items.forEachIndexed { index, sns ->
- row.addView(
- createSnsButton(
- iconResId = sns.iconResId,
- url = sns.url,
- isLast = index == item.items.lastIndex
- )
- )
- }
- sectionItems?.addView(row)
- }
-
- private fun addTextCard(title: String, body: String, imageUrl: String?) {
- val card = LinearLayout(itemView.context).apply {
- orientation = LinearLayout.HORIZONTAL
- gravity = android.view.Gravity.CENTER_VERTICAL
- setPadding(14.dp(), 14.dp(), 14.dp(), 14.dp())
- setBackgroundResource(R.drawable.bg_round_corner_16_7_222222)
- layoutParams = defaultBlockLayoutParams()
- }
- card.addView(createImage(imageUrl, 120.dp(), 80.dp()))
- card.addView(createTextGroup(title, body, bodyMaxLines = 4))
- sectionItems?.addView(card)
- }
-
- private fun createHorizontalCard(): LinearLayout =
- LinearLayout(itemView.context).apply {
- orientation = LinearLayout.HORIZONTAL
- gravity = android.view.Gravity.CENTER_VERTICAL
- setPadding(14.dp(), 14.dp(), 14.dp(), 14.dp())
- setBackgroundResource(R.drawable.bg_round_corner_16_7_222222)
- layoutParams = defaultBlockLayoutParams()
- }
-
- private fun createTextGroup(title: String, body: String, bodyMaxLines: Int): LinearLayout {
- val textGroup = LinearLayout(itemView.context).apply {
- orientation = LinearLayout.VERTICAL
- layoutParams = LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 1f).apply {
- marginStart = 12.dp()
+ val button = LayoutInflater.from(itemView.context).inflate(
+ R.layout.item_creator_channel_home_sns_icon,
+ snsItems,
+ false
+ ) as ImageView
+ val buttonSize = calculateCreatorChannelSnsButtonSizeDp(itemView.resources.configuration.screenWidthDp).dp()
+ button.layoutParams = LinearLayout.LayoutParams(buttonSize, buttonSize).apply {
+ marginEnd = if (index == item.items.lastIndex) 0 else 16.dp()
}
- }
- textGroup.addView(createText(title, R.style.Typography_Body2, R.color.white, maxLines = 2))
- textGroup.addView(createText(body, R.style.Typography_Caption2, R.color.gray_500, maxLines = bodyMaxLines))
- return textGroup
- }
-
- private fun createImage(imageUrl: String?, width: Int, height: Int): ImageView = ImageView(itemView.context).apply {
- layoutParams = LinearLayout.LayoutParams(width, height).apply {
- bottomMargin = 8.dp()
- }
- scaleType = ImageView.ScaleType.CENTER_CROP
- setBackgroundResource(R.drawable.bg_round_corner_16_7_222222)
- isVisible = !imageUrl.isNullOrBlank()
- imageUrl?.let(::loadUrl)
- }
-
- private fun defaultBlockLayoutParams(): LinearLayout.LayoutParams = LinearLayout.LayoutParams(
- LinearLayout.LayoutParams.MATCH_PARENT,
- LinearLayout.LayoutParams.WRAP_CONTENT
- ).apply {
- bottomMargin = 8.dp()
- }
-
- private fun addActivityRow(label: String, value: String) {
- val row = LinearLayout(itemView.context).apply {
- orientation = LinearLayout.HORIZONTAL
- setPadding(14.dp(), 8.dp(), 14.dp(), 8.dp())
- setBackgroundResource(R.drawable.bg_round_corner_16_7_222222)
- layoutParams = LinearLayout.LayoutParams(
- LinearLayout.LayoutParams.MATCH_PARENT,
- LinearLayout.LayoutParams.WRAP_CONTENT
- ).apply {
- bottomMargin = 6.dp()
- }
- }
- row.addView(
- createText(label, R.style.Typography_Caption2, R.color.gray_500, maxLines = 1).apply {
- layoutParams = LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 1f)
- }
- )
- row.addView(createText(value, R.style.Typography_Body2, R.color.white, maxLines = 1))
- sectionItems?.addView(row)
- }
-
- private fun createSnsButton(iconResId: Int, url: String, isLast: Boolean): ImageView =
- ImageView(itemView.context).apply {
- val buttonSize = calculateCreatorChannelSnsButtonSizeDp(itemView.resources.configuration.screenWidthDp)
- .dp()
- setImageResource(iconResId)
- scaleType = ImageView.ScaleType.FIT_CENTER
- layoutParams = LinearLayout.LayoutParams(buttonSize, buttonSize).apply {
- marginEnd = if (isLast) 0 else 16.dp()
- }
- setOnClickListener {
- val intent = Intent(Intent.ACTION_VIEW, url.toUri())
+ button.setImageResource(sns.iconResId)
+ button.contentDescription = sns.label
+ button.setOnClickListener {
+ val intent = Intent(Intent.ACTION_VIEW, sns.url.toUri())
if (intent.resolveActivity(itemView.context.packageManager) != null) {
itemView.context.startActivity(intent)
}
}
+ snsItems?.addView(button)
}
+ }
private fun formatDebutActivityValue(debutDateUtc: String?, dDay: String): String {
val debutDate = debutDateUtc.orEmpty()
@@ -538,16 +454,6 @@ class CreatorChannelHomeSectionAdapter(
}
}
- private fun createText(text: String, styleResId: Int, colorResId: Int, maxLines: Int): TextView =
- TextView(itemView.context).apply {
- setTextAppearance(styleResId)
- this.text = text
- setTextColor(itemView.context.getColor(colorResId))
- this.maxLines = maxLines
- ellipsize = android.text.TextUtils.TruncateAt.END
- isVisible = text.isNotBlank()
- }
-
private fun Int.dp(): Int = (this * itemView.resources.displayMetrics.density).toInt()
}
@@ -692,13 +598,17 @@ private fun formatCreatorChannelScheduleUtc(
internal fun calculateCreatorChannelSnsButtonSizeDp(screenWidthDp: Int): Int {
val width = screenWidthDp.takeIf { it > 0 } ?: 402
- return if (width >= 402) {
- 52
- } else {
- (52f * width / 402f).roundToInt()
- }
+ return minOf(
+ SNS_MAX_ICON_SIZE_DP,
+ (width - SNS_HORIZONTAL_PADDING_DP - SNS_TOTAL_GAP_DP).coerceAtLeast(0) / SNS_ICON_COUNT
+ )
}
+private const val SNS_ICON_COUNT = 5
+private const val SNS_MAX_ICON_SIZE_DP = 52
+private const val SNS_HORIZONTAL_PADDING_DP = 40
+private const val SNS_TOTAL_GAP_DP = 64
+
@ColorRes
internal fun calculateCreatorChannelDonationHeaderColorRes(can: Int): Int = when {
can >= 500 -> R.color.red_400
diff --git a/app/src/main/res/layout/item_creator_channel_home_activity.xml b/app/src/main/res/layout/item_creator_channel_home_activity.xml
index 5648f17d..087fc8ed 100644
--- a/app/src/main/res/layout/item_creator_channel_home_activity.xml
+++ b/app/src/main/res/layout/item_creator_channel_home_activity.xml
@@ -1,25 +1,149 @@
-
+
+ android:paddingHorizontal="@dimen/spacing_20"
+ android:layout_marginTop="@dimen/spacing_14"
+ android:orientation="vertical">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/item_creator_channel_home_introduce.xml b/app/src/main/res/layout/item_creator_channel_home_introduce.xml
index 5648f17d..0c906c6c 100644
--- a/app/src/main/res/layout/item_creator_channel_home_introduce.xml
+++ b/app/src/main/res/layout/item_creator_channel_home_introduce.xml
@@ -3,23 +3,21 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:gravity="center_horizontal"
android:orientation="vertical"
- android:paddingHorizontal="@dimen/spacing_20"
android:paddingTop="@dimen/spacing_20">
+
+
-
-
-
+ android:textSize="16sp"
+ tools:text="크리에이터가 커뮤니티에 올린 글이 보이는 부분 크리에이터가 커뮤니티에 올린 글이 보이는 부분" />
diff --git a/app/src/main/res/layout/item_creator_channel_home_sns.xml b/app/src/main/res/layout/item_creator_channel_home_sns.xml
index 5648f17d..e46b02d5 100644
--- a/app/src/main/res/layout/item_creator_channel_home_sns.xml
+++ b/app/src/main/res/layout/item_creator_channel_home_sns.xml
@@ -1,25 +1,27 @@
+ android:textSize="18sp"
+ android:textStyle="bold" />
-
+ android:gravity="center_vertical"
+ android:orientation="horizontal"
+ android:paddingHorizontal="@dimen/spacing_20" />
diff --git a/app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelHomeActivitySourceTest.kt b/app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelHomeActivitySourceTest.kt
index cbeec03b..234f695d 100644
--- a/app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelHomeActivitySourceTest.kt
+++ b/app/src/test/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelHomeActivitySourceTest.kt
@@ -157,15 +157,11 @@ class CreatorChannelHomeActivitySourceTest {
assertTrue(adapter.contains("bindFanTalk"))
assertTrue(adapter.contains("bindSns"))
assertTrue(adapter.contains("bindActivity"))
- assertTrue(adapter.contains("ll_section_items"))
- assertTrue(adapter.contains("sectionItems?.addView"))
- assertTrue(adapter.contains("addActivityRow"))
assertFalse(adapter.contains("createContentTile"))
assertFalse(adapter.contains("addFeedCard"))
assertFalse(adapter.contains("addScheduleRow"))
assertFalse(adapter.contains("addDonationCard"))
assertFalse(adapter.contains("addCommentCard"))
- assertTrue(adapter.contains("createSnsButton"))
assertTrue(adapter.contains("activity.debutDateUtc"))
assertTrue(adapter.contains("activity.liveDurationHours"))
assertTrue(adapter.contains("activity.liveContributorCount"))
@@ -179,6 +175,80 @@ class CreatorChannelHomeActivitySourceTest {
assertFalse(adapter.contains("fun CreatorChannelHomeSection.imageUrl"))
}
+ @Test
+ fun `소개 섹션은 카드 배경 없는 Figma 본문 텍스트로 렌더링한다`() {
+ val adapter = projectFile(
+ "app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/ui/CreatorChannelHomeSectionAdapter.kt"
+ ).readText()
+ val introduceLayout = projectFile("app/src/main/res/layout/item_creator_channel_home_introduce.xml").readText()
+
+ assertTrue(introduceLayout.contains("@layout/view_section_title"))
+ assertTrue(introduceLayout.contains("@+id/tv_introduce_body"))
+ assertTrue(introduceLayout.contains("android:layout_width=\"match_parent\""))
+ assertTrue(introduceLayout.contains("android:paddingHorizontal=\"@dimen/spacing_20\""))
+ assertFalse(introduceLayout.contains("android:layout_width=\"362dp\""))
+ assertTrue(introduceLayout.contains("android:textSize=\"16sp\""))
+ assertTrue(introduceLayout.contains("android:textColor=\"@color/white\""))
+ assertFalse(introduceLayout.contains("@+id/ll_section_items"))
+ assertFalse(introduceLayout.contains("bg_round_corner_16_7_222222"))
+ assertTrue(adapter.contains("private val introduceBody: TextView?"))
+ assertTrue(adapter.contains("introduceBody?.text = item.introduce"))
+ assertFalse(adapter.contains("private fun addTextCard"))
+ assertFalse(adapter.contains("addTextCard("))
+ }
+
+ @Test
+ fun `활동 섹션은 배경 카드 없는 label value row로 렌더링한다`() {
+ val adapter = projectFile(
+ "app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/ui/CreatorChannelHomeSectionAdapter.kt"
+ ).readText()
+ val activityLayout = projectFile("app/src/main/res/layout/item_creator_channel_home_activity.xml").readText()
+
+ assertTrue(activityLayout.contains("@layout/view_section_title"))
+ assertTrue(activityLayout.contains("android:layout_width=\"match_parent\""))
+ assertTrue(activityLayout.contains("android:paddingHorizontal=\"@dimen/spacing_20\""))
+ assertFalse(activityLayout.contains("android:layout_width=\"362dp\""))
+ assertTrue(activityLayout.contains("@+id/tv_activity_debut_value"))
+ assertTrue(activityLayout.contains("@+id/tv_activity_live_count_value"))
+ assertTrue(activityLayout.contains("@+id/tv_activity_live_duration_value"))
+ assertTrue(activityLayout.contains("@+id/tv_activity_live_contributor_value"))
+ assertTrue(activityLayout.contains("@+id/tv_activity_audio_count_value"))
+ assertTrue(activityLayout.contains("@+id/tv_activity_series_count_value"))
+ assertTrue(activityLayout.contains("@string/creator_channel_activity_debut"))
+ assertTrue(activityLayout.contains("@string/creator_channel_activity_live_count"))
+ assertFalse(activityLayout.contains("@+id/ll_section_items"))
+ assertFalse(activityLayout.contains("creator_channel_activity_photo"))
+ assertFalse(activityLayout.contains("bg_round_corner_16_7_222222"))
+ assertTrue(adapter.contains("private val activityDebutValue: TextView?"))
+ assertTrue(adapter.contains("activityDebutValue?.text = formatDebutActivityValue"))
+ assertTrue(adapter.contains("activitySeriesCountValue?.text = itemView.context.getString"))
+ assertFalse(adapter.contains("private fun addActivityRow"))
+ assertFalse(adapter.contains("addActivityRow("))
+ }
+
+ @Test
+ fun `SNS 섹션은 전용 layout 아이콘 row와 안전한 링크 실행을 유지한다`() {
+ val adapter = projectFile(
+ "app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/ui/CreatorChannelHomeSectionAdapter.kt"
+ ).readText()
+ val snsLayout = projectFile("app/src/main/res/layout/item_creator_channel_home_sns.xml").readText()
+
+ assertTrue(snsLayout.contains("@+id/tv_sns_title"))
+ assertTrue(snsLayout.contains("@string/creator_channel_section_sns"))
+ assertTrue(snsLayout.contains("android:textSize=\"18sp\""))
+ assertTrue(snsLayout.contains("@+id/ll_sns_items"))
+ assertTrue(snsLayout.contains("android:layout_width=\"match_parent\""))
+ assertTrue(snsLayout.contains("android:paddingHorizontal=\"@dimen/spacing_20\""))
+ assertFalse(snsLayout.contains("android:layout_width=\"362dp\""))
+ assertFalse(snsLayout.contains("@+id/ll_section_items"))
+ assertTrue(adapter.contains("private val snsItems: LinearLayout?"))
+ assertTrue(adapter.contains("snsItems?.removeAllViews()"))
+ assertTrue(adapter.contains("snsItems?.addView"))
+ assertTrue(adapter.contains("calculateCreatorChannelSnsButtonSizeDp"))
+ assertTrue(adapter.contains("button.contentDescription = sns.label"))
+ assertTrue(adapter.contains("resolveActivity(itemView.context.packageManager)"))
+ }
+
@Test
fun `현재 라이브 섹션은 전용 layout과 bind로 렌더링한다`() {
val adapter = projectFile(
@@ -391,8 +461,8 @@ class CreatorChannelHomeActivitySourceTest {
"app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/ui/CreatorChannelHomeSectionAdapter.kt"
).readText()
- assertTrue(adapter.contains("iconResId = sns.iconResId"))
- assertTrue(adapter.contains("url = sns.url"))
+ assertTrue(adapter.contains("button.setImageResource(sns.iconResId)"))
+ assertTrue(adapter.contains("Intent(Intent.ACTION_VIEW, sns.url.toUri())"))
assertTrue(adapter.contains("schedule.type.labelResId"))
assertFalse(adapter.contains("schedule.type.code"))
}
@@ -772,8 +842,12 @@ class CreatorChannelHomeActivitySourceTest {
assertTrue(mapper.contains("R.drawable.ic_sns_x"))
assertTrue(mapper.contains("R.drawable.ic_sns_kakao"))
assertTrue(mapper.contains("R.drawable.ic_sns_fancimm"))
- assertTrue(adapter.contains("private fun createSnsButton(iconResId: Int, url: String, isLast: Boolean): ImageView"))
- assertTrue(adapter.contains("setImageResource(iconResId)"))
+ assertTrue(adapter.contains("R.layout.item_creator_channel_home_sns_icon"))
+ assertTrue(adapter.contains("button.setImageResource(sns.iconResId)"))
+ assertTrue(adapter.contains("button.contentDescription = sns.label"))
+ val snsIconLayout = projectFile("app/src/main/res/layout/item_creator_channel_home_sns_icon.xml").readText()
+ assertFalse(snsIconLayout.contains("android:layout_width=\"52dp\""))
+ assertFalse(snsIconLayout.contains("android:layout_height=\"52dp\""))
assertFalse(adapter.contains("createText(label, R.style.Typography_Caption2, R.color.white"))
}
@@ -800,8 +874,16 @@ class CreatorChannelHomeActivitySourceTest {
assertEquals(52, calculateCreatorChannelSnsButtonSizeDp(402))
assertEquals(52, calculateCreatorChannelSnsButtonSizeDp(430))
- assertEquals(47, calculateCreatorChannelSnsButtonSizeDp(360))
+ assertEquals(51, calculateCreatorChannelSnsButtonSizeDp(360))
+ assertEquals(43, calculateCreatorChannelSnsButtonSizeDp(322))
+ assertEquals(43, calculateCreatorChannelSnsButtonSizeDp(320))
assertTrue(adapter.contains("calculateCreatorChannelSnsButtonSizeDp"))
+ assertTrue(adapter.contains("minOf("))
+ assertTrue(adapter.contains("SNS_MAX_ICON_SIZE_DP"))
+ assertTrue(adapter.contains("SNS_HORIZONTAL_PADDING_DP"))
+ assertTrue(adapter.contains("SNS_TOTAL_GAP_DP"))
+ assertTrue(adapter.contains("SNS_ICON_COUNT"))
+ assertFalse(adapter.contains("SNS_ICON_COUNT.toFloat()).roundToInt()"))
assertFalse(adapter.contains("LinearLayout.LayoutParams(52.dp(), 52.dp())"))
}
@@ -812,13 +894,12 @@ class CreatorChannelHomeActivitySourceTest {
).readText()
assertTrue(adapter.contains("item.items.forEachIndexed { index, sns ->"))
- assertTrue(adapter.contains("isLast = index == item.items.lastIndex"))
- assertTrue(adapter.contains("private fun createSnsButton(iconResId: Int, url: String, isLast: Boolean): ImageView"))
- assertTrue(adapter.contains("marginEnd = if (isLast) 0 else 16.dp()"))
+ assertTrue(adapter.contains("buttonSize = calculateCreatorChannelSnsButtonSizeDp"))
+ assertTrue(adapter.contains("marginEnd = if (index == item.items.lastIndex) 0 else 16.dp()"))
}
@Test
- fun `남은 section item layouts는 legacy generic card id를 제거하고 동적 컨테이너만 둔다`() {
+ fun `남은 section item layouts는 legacy generic card id를 제거한다`() {
val layoutNames = listOf(
"introduce",
"activity",
@@ -827,7 +908,7 @@ class CreatorChannelHomeActivitySourceTest {
layoutNames.forEach { name ->
val layout = projectFile("app/src/main/res/layout/item_creator_channel_home_$name.xml").readText()
- assertTrue(layout.contains("@+id/ll_section_items"))
+ assertFalse(layout.contains("@+id/ll_section_items"))
assertFalse(layout.contains("@+id/iv_thumbnail"))
assertFalse(layout.contains("@+id/tv_primary"))
assertFalse(layout.contains("@+id/tv_secondary"))