mirror of
https://github.com/oxen-io/session-android.git
synced 2024-12-25 01:07:47 +00:00
Fix tests
This commit is contained in:
parent
e700641da7
commit
668bf46655
@ -302,17 +302,17 @@ enum class ExpiryType(
|
|||||||
R.string.expiration_type_disappear_legacy,
|
R.string.expiration_type_disappear_legacy,
|
||||||
contentDescription = R.string.expiration_type_disappear_legacy_description
|
contentDescription = R.string.expiration_type_disappear_legacy_description
|
||||||
),
|
),
|
||||||
AFTER_SEND(
|
|
||||||
ExpiryMode::AfterSend,
|
|
||||||
R.string.expiration_type_disappear_after_send,
|
|
||||||
R.string.expiration_type_disappear_after_read_description,
|
|
||||||
R.string.expiration_type_disappear_after_send_description
|
|
||||||
),
|
|
||||||
AFTER_READ(
|
AFTER_READ(
|
||||||
ExpiryMode::AfterRead,
|
ExpiryMode::AfterRead,
|
||||||
R.string.expiration_type_disappear_after_read,
|
R.string.expiration_type_disappear_after_read,
|
||||||
R.string.expiration_type_disappear_after_read_description,
|
R.string.expiration_type_disappear_after_read_description,
|
||||||
R.string.expiration_type_disappear_after_read_description
|
R.string.expiration_type_disappear_after_read_description
|
||||||
|
),
|
||||||
|
AFTER_SEND(
|
||||||
|
ExpiryMode::AfterSend,
|
||||||
|
R.string.expiration_type_disappear_after_send,
|
||||||
|
R.string.expiration_type_disappear_after_read_description,
|
||||||
|
R.string.expiration_type_disappear_after_send_description
|
||||||
);
|
);
|
||||||
|
|
||||||
fun mode(seconds: Long) = if (seconds != 0L) createMode(seconds) else ExpiryMode.NONE
|
fun mode(seconds: Long) = if (seconds != 0L) createMode(seconds) else ExpiryMode.NONE
|
||||||
|
@ -3,6 +3,7 @@ package org.thoughtcrime.securesms.conversation.expiration
|
|||||||
import android.app.Application
|
import android.app.Application
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||||
|
import kotlinx.coroutines.flow.first
|
||||||
import kotlinx.coroutines.test.advanceUntilIdle
|
import kotlinx.coroutines.test.advanceUntilIdle
|
||||||
import kotlinx.coroutines.test.runTest
|
import kotlinx.coroutines.test.runTest
|
||||||
import network.loki.messenger.R
|
import network.loki.messenger.R
|
||||||
@ -31,7 +32,6 @@ import kotlin.time.Duration.Companion.minutes
|
|||||||
|
|
||||||
private const val THREAD_ID = 1L
|
private const val THREAD_ID = 1L
|
||||||
|
|
||||||
|
|
||||||
@OptIn(ExperimentalCoroutinesApi::class)
|
@OptIn(ExperimentalCoroutinesApi::class)
|
||||||
@RunWith(MockitoJUnitRunner::class)
|
@RunWith(MockitoJUnitRunner::class)
|
||||||
class ExpirationSettingsViewModelTest {
|
class ExpirationSettingsViewModelTest {
|
||||||
@ -112,9 +112,6 @@ class ExpirationSettingsViewModelTest {
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
val newTypeOption = TypeOptionCreator(time)
|
|
||||||
val newTimeOption = TimeOptionCreator(ExpiryType.AFTER_SEND)
|
|
||||||
|
|
||||||
assertThat(
|
assertThat(
|
||||||
viewModel.uiState.value
|
viewModel.uiState.value
|
||||||
).isEqualTo(
|
).isEqualTo(
|
||||||
@ -122,16 +119,16 @@ class ExpirationSettingsViewModelTest {
|
|||||||
showGroupFooter = false,
|
showGroupFooter = false,
|
||||||
CardModel(
|
CardModel(
|
||||||
R.string.activity_expiration_settings_delete_type,
|
R.string.activity_expiration_settings_delete_type,
|
||||||
newTypeOption(ExpiryType.NONE),
|
typeOption(ExpiryMode.NONE),
|
||||||
newTypeOption(ExpiryType.AFTER_READ),
|
typeOption(time, ExpiryType.AFTER_READ),
|
||||||
newTypeOption(ExpiryType.AFTER_SEND, selected = true)
|
typeOption(time, ExpiryType.AFTER_SEND, selected = true)
|
||||||
),
|
),
|
||||||
CardModel(
|
CardModel(
|
||||||
GetString(R.string.activity_expiration_settings_timer),
|
GetString(R.string.activity_expiration_settings_timer),
|
||||||
newTimeOption(duration = 12.hours, selected = true),
|
timeOption(ExpiryType.AFTER_SEND, 12.hours, selected = true),
|
||||||
newTimeOption(duration = 1.days),
|
timeOption(ExpiryType.AFTER_SEND, 1.days),
|
||||||
newTimeOption(duration = 7.days),
|
timeOption(ExpiryType.AFTER_SEND, 7.days),
|
||||||
newTimeOption(duration = 14.days)
|
timeOption(ExpiryType.AFTER_SEND, 14.days)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -162,9 +159,6 @@ class ExpirationSettingsViewModelTest {
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
val newTypeOption = TypeOptionCreator(time)
|
|
||||||
val newTimeOption = TimeOptionCreator(ExpiryType.AFTER_SEND)
|
|
||||||
|
|
||||||
assertThat(
|
assertThat(
|
||||||
viewModel.uiState.value
|
viewModel.uiState.value
|
||||||
).isEqualTo(
|
).isEqualTo(
|
||||||
@ -172,16 +166,16 @@ class ExpirationSettingsViewModelTest {
|
|||||||
showGroupFooter = false,
|
showGroupFooter = false,
|
||||||
CardModel(
|
CardModel(
|
||||||
R.string.activity_expiration_settings_delete_type,
|
R.string.activity_expiration_settings_delete_type,
|
||||||
newTypeOption(ExpiryType.NONE),
|
typeOption(ExpiryMode.NONE),
|
||||||
typeOption(12.hours, ExpiryType.AFTER_READ),
|
typeOption(12.hours, ExpiryType.AFTER_READ),
|
||||||
newTypeOption(ExpiryType.AFTER_SEND, selected = true)
|
typeOption(time, ExpiryType.AFTER_SEND, selected = true)
|
||||||
),
|
),
|
||||||
CardModel(
|
CardModel(
|
||||||
GetString(R.string.activity_expiration_settings_timer),
|
GetString(R.string.activity_expiration_settings_timer),
|
||||||
newTimeOption(duration = 12.hours),
|
timeOption(ExpiryType.AFTER_SEND, 12.hours),
|
||||||
newTimeOption(duration = 1.days, selected = true),
|
timeOption(ExpiryType.AFTER_SEND, 1.days, selected = true),
|
||||||
newTimeOption(duration = 7.days),
|
timeOption(ExpiryType.AFTER_SEND, 7.days),
|
||||||
newTimeOption(duration = 14.days)
|
timeOption(ExpiryType.AFTER_SEND, 14.days)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -213,8 +207,59 @@ class ExpirationSettingsViewModelTest {
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
val newTypeOption = TypeOptionCreator(time)
|
assertThat(
|
||||||
val newTimeOption = TimeOptionCreator(ExpiryType.AFTER_READ)
|
viewModel.uiState.value
|
||||||
|
).isEqualTo(
|
||||||
|
UiState(
|
||||||
|
showGroupFooter = false,
|
||||||
|
CardModel(
|
||||||
|
R.string.activity_expiration_settings_delete_type,
|
||||||
|
typeOption(ExpiryMode.NONE),
|
||||||
|
typeOption(1.days, ExpiryType.AFTER_READ, selected = true),
|
||||||
|
typeOption(time, ExpiryType.AFTER_SEND)
|
||||||
|
),
|
||||||
|
CardModel(
|
||||||
|
GetString(R.string.activity_expiration_settings_timer),
|
||||||
|
timeOption(ExpiryType.AFTER_READ, 5.minutes),
|
||||||
|
timeOption(ExpiryType.AFTER_READ, 1.hours),
|
||||||
|
timeOption(ExpiryType.AFTER_READ, 12.hours),
|
||||||
|
timeOption(ExpiryType.AFTER_READ, 1.days, selected = true),
|
||||||
|
timeOption(ExpiryType.AFTER_READ, 7.days),
|
||||||
|
timeOption(ExpiryType.AFTER_READ, 14.days)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `1-1 conversation, init 12 hours after read, then select after send, new config`() = runTest {
|
||||||
|
val time = 12.hours
|
||||||
|
val someAddress = Address.fromSerialized("05---SOME---ADDRESS")
|
||||||
|
|
||||||
|
mock1on1AfterRead(time, someAddress)
|
||||||
|
|
||||||
|
val viewModel = createViewModel()
|
||||||
|
|
||||||
|
advanceUntilIdle()
|
||||||
|
|
||||||
|
viewModel.setMode(afterSendMode(1.days))
|
||||||
|
|
||||||
|
advanceUntilIdle()
|
||||||
|
|
||||||
|
assertThat(
|
||||||
|
viewModel.state.value
|
||||||
|
).isEqualTo(
|
||||||
|
State(
|
||||||
|
isGroup = false,
|
||||||
|
isSelfAdmin = true,
|
||||||
|
address = someAddress,
|
||||||
|
isNoteToSelf = false,
|
||||||
|
expiryMode = afterSendMode(1.days),
|
||||||
|
isNewConfigEnabled = true,
|
||||||
|
persistedMode = afterReadMode(12.hours),
|
||||||
|
showDebugOptions = false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
assertThat(
|
assertThat(
|
||||||
viewModel.uiState.value
|
viewModel.uiState.value
|
||||||
@ -223,23 +268,36 @@ class ExpirationSettingsViewModelTest {
|
|||||||
showGroupFooter = false,
|
showGroupFooter = false,
|
||||||
CardModel(
|
CardModel(
|
||||||
R.string.activity_expiration_settings_delete_type,
|
R.string.activity_expiration_settings_delete_type,
|
||||||
newTypeOption(ExpiryType.NONE),
|
typeOption(ExpiryMode.NONE),
|
||||||
typeOption(1.days, ExpiryType.AFTER_READ, selected = true),
|
typeOption(12.hours, ExpiryType.AFTER_READ),
|
||||||
newTypeOption(ExpiryType.AFTER_SEND)
|
typeOption(1.days, ExpiryType.AFTER_SEND, selected = true)
|
||||||
),
|
),
|
||||||
CardModel(
|
CardModel(
|
||||||
GetString(R.string.activity_expiration_settings_timer),
|
GetString(R.string.activity_expiration_settings_timer),
|
||||||
newTimeOption(duration = 5.minutes),
|
timeOption(ExpiryType.AFTER_SEND, 12.hours),
|
||||||
newTimeOption(duration = 1.hours),
|
timeOption(ExpiryType.AFTER_SEND, 1.days, selected = true),
|
||||||
newTimeOption(duration = 12.hours),
|
timeOption(ExpiryType.AFTER_SEND, 7.days),
|
||||||
newTimeOption(duration = 1.days, selected = true),
|
timeOption(ExpiryType.AFTER_SEND, 14.days)
|
||||||
newTimeOption(duration = 7.days),
|
|
||||||
newTimeOption(duration = 14.days)
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun timeOption(
|
||||||
|
type: ExpiryType,
|
||||||
|
time: Duration,
|
||||||
|
enabled: Boolean = true,
|
||||||
|
selected: Boolean = false
|
||||||
|
) = OptionModel(
|
||||||
|
value = type.mode(time),
|
||||||
|
title = GetString(time),
|
||||||
|
enabled = enabled,
|
||||||
|
selected = selected
|
||||||
|
)
|
||||||
|
|
||||||
|
private fun afterSendMode(time: Duration) = ExpiryMode.AfterSend(time.inWholeSeconds)
|
||||||
|
private fun afterReadMode(time: Duration) = ExpiryMode.AfterRead(time.inWholeSeconds)
|
||||||
|
|
||||||
private fun mock1on1AfterRead(time: Duration, someAddress: Address) {
|
private fun mock1on1AfterRead(time: Duration, someAddress: Address) {
|
||||||
mock1on1(ExpiryType.AFTER_READ.mode(time), someAddress)
|
mock1on1(ExpiryType.AFTER_READ.mode(time), someAddress)
|
||||||
}
|
}
|
||||||
@ -258,31 +316,12 @@ class ExpirationSettingsViewModelTest {
|
|||||||
whenever(recipient.address).thenReturn(someAddress)
|
whenever(recipient.address).thenReturn(someAddress)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun afterSendConfig(time: Duration) =
|
|
||||||
config(ExpiryType.AFTER_SEND.mode(time.inWholeSeconds))
|
|
||||||
private fun afterReadConfig(time: Duration) =
|
|
||||||
config(ExpiryType.AFTER_READ.mode(time.inWholeSeconds))
|
|
||||||
|
|
||||||
private fun config(mode: ExpiryMode) = ExpirationConfiguration(
|
private fun config(mode: ExpiryMode) = ExpirationConfiguration(
|
||||||
threadId = THREAD_ID,
|
threadId = THREAD_ID,
|
||||||
expiryMode = mode,
|
expiryMode = mode,
|
||||||
updatedTimestampMs = 0
|
updatedTimestampMs = 0
|
||||||
)
|
)
|
||||||
|
|
||||||
private class TypeOptionCreator(private val time: Duration) {
|
|
||||||
operator fun invoke(type: ExpiryType, selected: Boolean = false, enabled: Boolean = true) =
|
|
||||||
typeOption(time, type, selected, enabled)
|
|
||||||
}
|
|
||||||
|
|
||||||
private class TimeOptionCreator(private val type: ExpiryType) {
|
|
||||||
operator fun invoke(duration: Duration, selected: Boolean = false, enabled: Boolean = true) = OptionModel(
|
|
||||||
value = type.mode(duration),
|
|
||||||
title = GetString(duration),
|
|
||||||
enabled = enabled,
|
|
||||||
selected = selected
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun createViewModel(isNewConfigEnabled: Boolean = true) = ExpirationSettingsViewModel(
|
private fun createViewModel(isNewConfigEnabled: Boolean = true) = ExpirationSettingsViewModel(
|
||||||
THREAD_ID,
|
THREAD_ID,
|
||||||
application,
|
application,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user