fix(content): 콘텐츠 상세 펼침 말줄임을 복원한다
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user