diff --git a/app/src/test/java/org/thoughtcrime/securesms/conversation/expiration/ExpirationSettingsViewModelTest.kt b/app/src/test/java/org/thoughtcrime/securesms/conversation/expiration/ExpirationSettingsViewModelTest.kt index 210b9a6028..52bf25b4d3 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/conversation/expiration/ExpirationSettingsViewModelTest.kt +++ b/app/src/test/java/org/thoughtcrime/securesms/conversation/expiration/ExpirationSettingsViewModelTest.kt @@ -27,6 +27,7 @@ import org.thoughtcrime.securesms.ui.GetString import kotlin.time.Duration import kotlin.time.Duration.Companion.days import kotlin.time.Duration.Companion.hours +import kotlin.time.Duration.Companion.minutes private const val THREAD_ID = 1L @@ -204,9 +205,67 @@ class ExpirationSettingsViewModelTest { ) } - private fun newExpirationConfiguration(time: Duration? = null) = ExpirationConfiguration( + @Test + fun `1-1 conversation, 1 day after read, new config`() = runTest { + val time = 1.days + val someAddress = Address.fromSerialized("05---SOME---ADDRESS") + val config = newExpirationConfiguration(time, ExpiryType.AFTER_READ) + + whenever(threadDb.getRecipientForThreadId(Mockito.anyLong())).thenReturn(recipient) + whenever(storage.getExpirationConfiguration(Mockito.anyLong())).thenReturn(config) + whenever(textSecurePreferences.getLocalNumber()).thenReturn("05---LOCAL---ADDRESS") + whenever(recipient.isClosedGroupRecipient).thenReturn(false) + whenever(recipient.address).thenReturn(someAddress) + + val viewModel = createViewModel() + + advanceUntilIdle() + + assertThat( + viewModel.state.value + ).isEqualTo( + State( + isGroup = false, + isSelfAdmin = true, + address = someAddress, + isNoteToSelf = false, + expiryMode = ExpiryMode.AfterRead(1.days.inWholeSeconds), + isNewConfigEnabled = true, + persistedMode = ExpiryMode.AfterRead(1.days.inWholeSeconds), + showDebugOptions = false + ) + ) + + val newTypeOption = TypeOptionCreator(time) + val newTimeOption = TimeOptionCreator(ExpiryType.AFTER_READ) + + assertThat( + viewModel.uiState.value + ).isEqualTo( + UiState( + showGroupFooter = false, + CardModel( + R.string.activity_expiration_settings_delete_type, + newTypeOption(ExpiryType.NONE), + typeOption(1.days, ExpiryType.AFTER_READ, selected = true), + newTypeOption(ExpiryType.AFTER_SEND) + ), + CardModel( + GetString(R.string.activity_expiration_settings_timer), + newTimeOption(duration = 5.minutes), + newTimeOption(duration = 1.hours), + newTimeOption(duration = 12.hours), + newTimeOption(duration = 1.days, selected = true), + newTimeOption(duration = 7.days), + newTimeOption(duration = 14.days) + ) + ) + ) + } + + private fun newExpirationConfiguration(time: Duration? = null, type: ExpiryType = ExpiryType.AFTER_SEND) = ExpirationConfiguration( threadId = THREAD_ID, - expiryMode = time?.inWholeSeconds?.let(ExpiryMode::AfterSend) ?: ExpiryMode.NONE, + expiryMode = time?.inWholeSeconds?.let(type::mode) ?: ExpiryMode.NONE, updatedTimestampMs = 0 )