fix(content): 콘텐츠 상세 펼침 말줄임을 복원한다

This commit is contained in:
2026-08-03 16:33:35 +09:00
parent b5cfdc83e3
commit 26eae18edc
5 changed files with 383 additions and 0 deletions

View File

@@ -1,3 +1,5 @@
@file:Suppress("ktlint:package-name", "ktlint:standard:package-name")
package kr.co.vividnext.sodalive.audio_content.detail
import android.annotation.SuppressLint
@@ -10,6 +12,7 @@ import android.os.Build
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.text.TextUtils
import android.view.LayoutInflater
import android.view.View
import android.view.inputmethod.InputMethodManager
@@ -463,6 +466,11 @@ class AudioContentDetailActivity : BaseActivity<ActivityAudioContentDetailBindin
}
viewModel.isExpandDetail.observe(this) {
binding.tvDetail.ellipsize = if (it) {
null
} else {
TextUtils.TruncateAt.END
}
binding.tvDetail.maxLines = if (it) {
Int.MAX_VALUE
} else {

View File

@@ -0,0 +1,51 @@
@file:Suppress("ktlint:package-name", "ktlint:standard:package-name")
package kr.co.vividnext.sodalive.audio_content.detail
import org.junit.Assert.assertTrue
import org.junit.Test
import java.io.File
class AudioContentDetailActivitySourceTest {
@Test
fun `긴 설명을 펼치면 말줄임을 제거한다`() {
val observer = expandDetailObserver()
assertTrue(observer.contains("binding.tvDetail.ellipsize = if (it)"))
assertTrue(observer.contains("null"))
assertTrue(observer.contains("Int.MAX_VALUE"))
}
@Test
fun `긴 설명을 접으면 두 줄 말줄임을 복원한다`() {
val observer = expandDetailObserver()
assertTrue(observer.contains("TextUtils.TruncateAt.END"))
assertTrue(observer.contains("2"))
}
@Test
fun `긴 설명의 반복 토글 상태를 한 observer에서 처리한다`() {
val observer = expandDetailObserver()
assertTrue(observer.contains("binding.tvDetail.ellipsize = if (it)"))
assertTrue(observer.contains("binding.tvDetail.maxLines = if (it)"))
}
private fun expandDetailObserver(): String {
val source = projectFile(
"app/src/main/java/kr/co/vividnext/sodalive/audio_content/detail/AudioContentDetailActivity.kt"
).readText()
return source
.substringAfter("viewModel.isExpandDetail.observe(this) {")
.substringBefore("viewModel.isShowPreviewAlert.observe(this) {")
}
private fun projectFile(relativePath: String): File {
val candidates = listOf(File(relativePath), File("../$relativePath"))
return candidates.firstOrNull { it.exists() }
?: error("Project file not found: $relativePath")
}
}