Add tests for compose activity initial state changes (#1972)

main
Levi Bard 3 years ago committed by Alibek Omarov
parent 313209e249
commit 684289d3e3
  1. 2
      app/src/main/java/com/keylesspalace/tusky/components/compose/ComposeActivity.kt
  2. 21
      app/src/test/java/com/keylesspalace/tusky/ComposeActivityTest.kt

@ -1339,7 +1339,7 @@ class ComposeActivity : BaseActivity(),
private const val MEDIA_TAKE_PHOTO_RESULT = 2
private const val PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE = 1
private const val COMPOSE_OPTIONS_EXTRA = "COMPOSE_OPTIONS"
internal const val COMPOSE_OPTIONS_EXTRA = "COMPOSE_OPTIONS"
private const val PHOTO_UPLOAD_URI_KEY = "PHOTO_UPLOAD_URI"
// Mastodon only counts URLs as this long in terms of status character limits

@ -16,6 +16,7 @@
package com.keylesspalace.tusky
import android.content.Intent
import android.text.SpannedString
import android.widget.EditText
import androidx.test.ext.junit.runners.AndroidJUnit4
@ -77,6 +78,7 @@ class ComposeActivityTest {
)
var instanceResponseCallback: (()->Instance)? = null
var nodeinfoResponseCallback: (()->NodeInfo)? = null
var composeOptions: ComposeActivity.ComposeOptions? = null
@Before
fun setupActivity() {
@ -144,6 +146,9 @@ class ComposeActivityTest {
mock(SaveTootHelper::class.java),
dbMock
)
activity.intent = Intent(activity, ComposeActivity::class.java).apply {
putExtra(ComposeActivity.COMPOSE_OPTIONS_EXTRA, composeOptions)
}
val viewModelFactoryMock = mock(ViewModelFactory::class.java)
`when`(viewModelFactoryMock.create(ComposeViewModel::class.java)).thenReturn(viewModel)
@ -170,6 +175,14 @@ class ComposeActivityTest {
// We would like to check for dialog but Robolectric doesn't work with AppCompat v7 yet
}
@Test
fun whenModifiedInitialState_andCloseButtonPressed_notFinish() {
composeOptions = ComposeActivity.ComposeOptions(modifiedInitialState = true)
setupActivity()
clickUp()
assertFalse(activity.isFinishing)
}
@Test
fun whenBackButtonPressedAndEmpty_finish() {
clickBack()
@ -184,6 +197,14 @@ class ComposeActivityTest {
// We would like to check for dialog but Robolectric doesn't work with AppCompat v7 yet
}
@Test
fun whenModifiedInitialState_andBackButtonPressed_notFinish() {
composeOptions = ComposeActivity.ComposeOptions(modifiedInitialState = true)
setupActivity()
clickBack()
assertFalse(activity.isFinishing)
}
@Test
fun whenMaximumTootCharsIsNull_defaultLimitIsUsed() {
instanceResponseCallback = { getInstanceWithMaximumTootCharacters(null) }

Loading…
Cancel
Save