feat(creator-channel): FanTalk 글 입력 화면을 연결한다
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
package kr.co.vividnext.sodalive.v2.creator.channel.fantalk.write
|
||||
|
||||
import org.junit.Assert.assertFalse
|
||||
import org.junit.Assert.assertTrue
|
||||
import org.junit.Test
|
||||
import java.io.File
|
||||
|
||||
class CreatorChannelFanTalkWriteSourceTest {
|
||||
|
||||
@Test
|
||||
fun `글 입력 Activity source는 intent focus keyboard result cancel back 계약을 포함한다`() {
|
||||
val source = projectFile(
|
||||
"app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/fantalk/write/CreatorChannelFanTalkWriteActivity.kt"
|
||||
).readText()
|
||||
val manifest = projectFile("app/src/main/AndroidManifest.xml").readText()
|
||||
|
||||
assertTrue(source.contains("fun newIntent(context: Context, creatorId: Long): Intent"))
|
||||
assertTrue(source.contains("putExtra(EXTRA_CREATOR_ID, creatorId)"))
|
||||
assertTrue(source.contains("if (creatorId <= 0L)"))
|
||||
assertTrue(source.contains("finish()"))
|
||||
assertTrue(source.contains("requestFocus()"))
|
||||
assertTrue(source.contains("WindowCompat.getInsetsController(window, binding.etCreatorChannelFantalkWriteContent)"))
|
||||
assertTrue(source.contains("WindowInsetsCompat.Type.ime()"))
|
||||
assertTrue(source.contains("onBackPressedDispatcher.addCallback"))
|
||||
assertTrue(source.contains("showCancelConfirmDialog()"))
|
||||
assertTrue(source.contains("setResult(RESULT_OK)"))
|
||||
assertTrue(source.contains("viewModel.submit(creatorId)"))
|
||||
assertTrue(manifest.contains(".v2.creator.channel.fantalk.write.CreatorChannelFanTalkWriteActivity"))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `글 입력 layout과 문자열은 Figma 확정 계약을 포함한다`() {
|
||||
val source = projectFile(
|
||||
"app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/fantalk/write/CreatorChannelFanTalkWriteActivity.kt"
|
||||
).readText()
|
||||
val layout = projectFile("app/src/main/res/layout/activity_creator_channel_fantalk_write.xml").readText()
|
||||
val strings = projectFile("app/src/main/res/values/strings.xml").readText()
|
||||
val stringsEn = projectFile("app/src/main/res/values-en/strings.xml").readText()
|
||||
val stringsJa = projectFile("app/src/main/res/values-ja/strings.xml").readText()
|
||||
|
||||
assertTrue(layout.contains("@+id/tv_creator_channel_fantalk_write_cancel"))
|
||||
assertTrue(layout.contains("@+id/et_creator_channel_fantalk_write_content"))
|
||||
assertTrue(layout.contains("@+id/tv_creator_channel_fantalk_write_send"))
|
||||
assertTrue(layout.contains("@+id/layout_creator_channel_fantalk_write_info_bar"))
|
||||
assertTrue(layout.contains("@+id/tv_creator_channel_fantalk_write_count"))
|
||||
assertTrue(layout.contains("@+id/tv_creator_channel_fantalk_write_count_limit"))
|
||||
assertTrue(layout.contains("android:maxLength=\"500\""))
|
||||
assertTrue(layout.contains("android:text=\"/500자\""))
|
||||
assertFalse(layout.contains("tv_creator_channel_fantalk_write_title"))
|
||||
assertTrue(layout.contains("@string/creator_channel_fantalk_write_cancel"))
|
||||
assertTrue(layout.contains("@string/creator_channel_fantalk_write_hint"))
|
||||
assertTrue(layout.contains("@string/creator_channel_fantalk_write_send"))
|
||||
assertTrue(
|
||||
projectFile("app/src/main/res/drawable/bg_creator_channel_fantalk_write_send_enabled.xml")
|
||||
.readText()
|
||||
.contains("@color/soda_400")
|
||||
)
|
||||
assertTrue(source.contains("if (isEnabled) R.color.white else R.color.gray_500"))
|
||||
assertTrue(strings.contains("<string name=\"creator_channel_fantalk_write_exit_title\">입력 종료</string>"))
|
||||
assertTrue(
|
||||
strings.contains(
|
||||
"<string name=\"creator_channel_fantalk_write_exit_desc\">입력을 종료할까요?\\n지금 나가면 입력한 내용이 저장되지 않아요.</string>"
|
||||
)
|
||||
)
|
||||
assertTrue(strings.contains("<string name=\"creator_channel_fantalk_write_exit_cancel\">계속 작성</string>"))
|
||||
assertTrue(strings.contains("<string name=\"creator_channel_fantalk_write_exit_confirm\">종료</string>"))
|
||||
assertTrue(stringsEn.contains("creator_channel_fantalk_write_exit_title"))
|
||||
assertTrue(stringsJa.contains("creator_channel_fantalk_write_exit_title"))
|
||||
}
|
||||
|
||||
private fun projectFile(path: String): File = File(projectRoot(), path)
|
||||
|
||||
private fun projectRoot(): File {
|
||||
return generateSequence(File(System.getProperty("user.dir") ?: ".").absoluteFile) { it.parentFile }
|
||||
.first { File(it, "settings.gradle").exists() }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user