feat(chat): DM 채팅방 Activity를 추가한다
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
package kr.co.vividnext.sodalive.v2.main.chat.dm
|
||||
|
||||
import org.junit.Assert.assertFalse
|
||||
import org.junit.Assert.assertTrue
|
||||
import org.junit.Test
|
||||
import java.io.File
|
||||
|
||||
class DmChatRoomActivitySourceTest {
|
||||
|
||||
@Test
|
||||
fun `DM 채팅방 Activity source는 intent binding input pagination scroll lifecycle을 연결한다`() {
|
||||
val source = projectFile(
|
||||
"app/src/main/java/kr/co/vividnext/sodalive/v2/main/chat/dm/DmChatRoomActivity.kt"
|
||||
).readText()
|
||||
|
||||
assertTrue(source.contains("BaseActivity<ActivityDmChatRoomBinding>"))
|
||||
assertTrue(source.contains("const val EXTRA_ROOM_ID"))
|
||||
assertTrue(source.contains("const val EXTRA_CREATOR_ID"))
|
||||
assertTrue(source.contains("fun newIntentByRoomId"))
|
||||
assertTrue(source.contains("fun newIntentByCreatorId"))
|
||||
assertTrue(source.contains("private val viewModel: DmChatRoomViewModel by viewModel()"))
|
||||
assertTrue(source.contains("viewModel.enter(roomId = roomId, creatorId = creatorId)"))
|
||||
assertTrue(source.contains("binding.ivBack.setOnClickListener { finish() }"))
|
||||
assertTrue(source.contains("DmChatMessageAdapter"))
|
||||
assertTrue(source.contains("binding.etMessage.setOnEditorActionListener"))
|
||||
assertTrue(source.contains("EditorInfo.IME_ACTION_SEND"))
|
||||
assertTrue(source.contains("binding.ivSend.setOnClickListener"))
|
||||
assertTrue(source.contains("viewModel.sendText"))
|
||||
assertTrue(source.contains("findFirstVisibleItemPosition()"))
|
||||
assertTrue(source.contains("viewModel.loadOlderMessages()"))
|
||||
assertTrue(source.contains("prependedMessageCountLiveData.observe(this)"))
|
||||
assertTrue(source.contains("scrollToPositionWithOffset"))
|
||||
assertTrue(source.contains("isNearBottom()"))
|
||||
assertTrue(source.contains("private var isStarted: Boolean = false"))
|
||||
assertTrue(source.contains("viewModel.connectRealtime()"))
|
||||
assertTrue(source.contains("roomOpenedEventLiveData.observe(this)"))
|
||||
assertTrue(source.contains("if (it.consume() == true) connectRealtimeIfStarted()"))
|
||||
assertTrue(source.contains("connectRealtimeIfStarted()"))
|
||||
assertTrue(source.contains("viewModel.disconnectRealtime()"))
|
||||
assertFalse(source.contains("if (isStarted) viewModel.connectRealtime()"))
|
||||
assertTrue(!source.contains("character_type_badge"))
|
||||
assertTrue(!source.contains("notice_container"))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `DM 채팅방 Activity intent helper는 roomId와 creatorId를 각각 전달한다`() {
|
||||
val source = projectFile(
|
||||
"app/src/main/java/kr/co/vividnext/sodalive/v2/main/chat/dm/DmChatRoomActivity.kt"
|
||||
).readText()
|
||||
|
||||
assertTrue(source.contains("Intent(context, DmChatRoomActivity::class.java)"))
|
||||
assertTrue(source.contains("putExtra(EXTRA_ROOM_ID, roomId)"))
|
||||
assertTrue(source.contains("putExtra(EXTRA_CREATOR_ID, creatorId)"))
|
||||
}
|
||||
|
||||
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