Add old config tests

This commit is contained in:
andrew 2023-09-20 14:14:58 +09:30
parent 668bf46655
commit cd0022e0ee

View File

@ -3,7 +3,6 @@ package org.thoughtcrime.securesms.conversation.expiration
import android.app.Application
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.test.advanceUntilIdle
import kotlinx.coroutines.test.runTest
import network.loki.messenger.R
@ -31,6 +30,8 @@ import kotlin.time.Duration.Companion.hours
import kotlin.time.Duration.Companion.minutes
private const val THREAD_ID = 1L
private const val LOCAL_NUMBER = "05---local---address"
private val LOCAL_ADDRESS = Address.fromSerialized(LOCAL_NUMBER)
@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(MockitoJUnitRunner::class)
@ -48,6 +49,86 @@ class ExpirationSettingsViewModelTest {
@Mock lateinit var storage: Storage
@Mock lateinit var recipient: Recipient
@Test
fun `note to self, off, new config`() = runTest {
mock1on1(ExpiryMode.NONE, LOCAL_ADDRESS)
val viewModel = createViewModel()
advanceUntilIdle()
assertThat(
viewModel.state.value
).isEqualTo(
State(
isGroup = false,
isSelfAdmin = true,
address = LOCAL_ADDRESS,
isNoteToSelf = true,
expiryMode = ExpiryMode.NONE,
isNewConfigEnabled = true,
persistedMode = ExpiryMode.NONE,
showDebugOptions = false
)
)
assertThat(
viewModel.uiState.value
).isEqualTo(
UiState(
showGroupFooter = false,
CardModel(
R.string.activity_expiration_settings_timer,
typeOption(ExpiryMode.NONE, selected = true),
timeOption(ExpiryType.AFTER_SEND, 12.hours),
timeOption(ExpiryType.AFTER_SEND, 1.days),
timeOption(ExpiryType.AFTER_SEND, 7.days),
timeOption(ExpiryType.AFTER_SEND, 14.days)
)
)
)
}
@Test
fun `note to self, off, old config`() = runTest {
mock1on1(ExpiryMode.NONE, LOCAL_ADDRESS)
val viewModel = createViewModel(isNewConfigEnabled = false)
advanceUntilIdle()
assertThat(
viewModel.state.value
).isEqualTo(
State(
isGroup = false,
isSelfAdmin = true,
address = LOCAL_ADDRESS,
isNoteToSelf = true,
expiryMode = ExpiryMode.NONE,
isNewConfigEnabled = false,
persistedMode = ExpiryMode.NONE,
showDebugOptions = false
)
)
assertThat(
viewModel.uiState.value
).isEqualTo(
UiState(
showGroupFooter = false,
CardModel(
R.string.activity_expiration_settings_timer,
typeOption(ExpiryMode.NONE, selected = true),
timeOption(ExpiryType.AFTER_SEND, 12.hours),
timeOption(ExpiryType.AFTER_SEND, 1.days),
timeOption(ExpiryType.AFTER_SEND, 7.days),
timeOption(ExpiryType.AFTER_SEND, 14.days)
)
)
)
}
@Test
fun `1-1 conversation, off, new config`() = runTest {
val someAddress = Address.fromSerialized("05---SOME---ADDRESS")
@ -134,6 +215,54 @@ class ExpirationSettingsViewModelTest {
)
}
@Test
fun `1-1 conversation, 12 hours legacy, old config`() = runTest {
val time = 12.hours
val someAddress = Address.fromSerialized("05---SOME---ADDRESS")
mock1on1(ExpiryType.LEGACY.mode(time), someAddress)
val viewModel = createViewModel(isNewConfigEnabled = false)
advanceUntilIdle()
assertThat(
viewModel.state.value
).isEqualTo(
State(
isGroup = false,
isSelfAdmin = true,
address = someAddress,
isNoteToSelf = false,
expiryMode = ExpiryType.LEGACY.mode(12.hours),
isNewConfigEnabled = false,
persistedMode = ExpiryType.LEGACY.mode(12.hours),
showDebugOptions = false
)
)
assertThat(
viewModel.uiState.value
).isEqualTo(
UiState(
showGroupFooter = false,
CardModel(
R.string.activity_expiration_settings_delete_type,
typeOption(ExpiryMode.NONE),
typeOption(time, ExpiryType.LEGACY, selected = true),
typeOption(12.hours, ExpiryType.AFTER_READ, enabled = false),
typeOption(1.days, ExpiryType.AFTER_SEND, enabled = false)
),
CardModel(
GetString(R.string.activity_expiration_settings_timer),
timeOption(ExpiryType.AFTER_SEND, 12.hours, selected = true),
timeOption(ExpiryType.AFTER_SEND, 1.days),
timeOption(ExpiryType.AFTER_SEND, 7.days),
timeOption(ExpiryType.AFTER_SEND, 14.days)
)
)
)
}
@Test
fun `1-1 conversation, 1 day after send, new config`() = runTest {
val time = 1.days
@ -306,12 +435,12 @@ class ExpirationSettingsViewModelTest {
mock1on1(ExpiryType.AFTER_SEND.mode(time), someAddress)
}
private fun mock1on1(mode: ExpiryMode, someAddress: Address) {
private fun mock1on1(mode: ExpiryMode, someAddress: Address, new: Boolean = true) {
val config = config(mode)
whenever(threadDb.getRecipientForThreadId(Mockito.anyLong())).thenReturn(recipient)
whenever(storage.getExpirationConfiguration(Mockito.anyLong())).thenReturn(config)
whenever(textSecurePreferences.getLocalNumber()).thenReturn("05---LOCAL---ADDRESS")
whenever(textSecurePreferences.getLocalNumber()).thenReturn(LOCAL_NUMBER)
whenever(recipient.isClosedGroupRecipient).thenReturn(false)
whenever(recipient.address).thenReturn(someAddress)
}