summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJonatan Rhodin <jonatan.rhodin@mullvad.net>2023-09-06 12:42:29 +0200
committerJonatan Rhodin <jonatan.rhodin@mullvad.net>2023-09-06 12:42:29 +0200
commit02715c2eb2b011393f4c7ada34d8f70014eb0524 (patch)
treec7b7cc423f3297baaef8d48517cf498d219be6d9
parentcfc1aa9b12de7accc86e7e65606058d11ab76102 (diff)
parentbf4428f11454f6287535edad4876166286e04c31 (diff)
downloadmullvadvpn-02715c2eb2b011393f4c7ada34d8f70014eb0524.tar.xz
mullvadvpn-02715c2eb2b011393f4c7ada34d8f70014eb0524.zip
Merge branch 'cannot-fold-unfold-the-connection-details-in-certain-droid-298'
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt3
-rw-r--r--android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModelTest.kt43
2 files changed, 45 insertions, 1 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt
index b67cd754c4..3df2ea3a07 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt
@@ -134,7 +134,8 @@ class ConnectViewModel(
awaitClose { onNewLocation = null }
}
// Filter out empty or short-name country representations.
- .filter { it?.let { location -> location.country.length > 2 } ?: false }
+ // We want to keep null location to handle those situations
+ .filter { it?.let { location -> location.country.length > 2 } ?: true }
private fun RelayListListener.relayListCallbackFlow() = callbackFlow {
onRelayCountriesChange = { _, item -> this.trySend(item) }
diff --git a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModelTest.kt b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModelTest.kt
index d8ec2b26f7..776136d1c5 100644
--- a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModelTest.kt
+++ b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModelTest.kt
@@ -221,6 +221,49 @@ class ConnectViewModelTest {
}
@Test
+ fun testLocationUpdateFilteredCountry() =
+ // Arrange
+ runTest(testCoroutineRule.testDispatcher) {
+ val locationTestItem =
+ GeoIpLocation(
+ ipv4 = mockk(relaxed = true),
+ ipv6 = mockk(relaxed = true),
+ country = "SW",
+ city = "gb",
+ hostname = "Ho"
+ )
+
+ // Act, Assert
+ viewModel.uiState.test {
+ assertEquals(ConnectUiState.INITIAL, awaitItem())
+ serviceConnectionState.value =
+ ServiceConnectionState.ConnectedReady(mockServiceConnectionContainer)
+ locationSlot.captured.invoke(locationTestItem)
+ relaySlot.captured.invoke(mockk(), mockk())
+ expectNoEvents()
+ }
+ }
+
+ @Test
+ fun testLocationUpdateNullLocation() =
+ // Arrange
+ runTest(testCoroutineRule.testDispatcher) {
+ val locationTestItem = null
+
+ // Act, Assert
+ viewModel.uiState.test {
+ assertEquals(ConnectUiState.INITIAL, awaitItem())
+ serviceConnectionState.value =
+ ServiceConnectionState.ConnectedReady(mockServiceConnectionContainer)
+ locationSlot.captured.invoke(locationTestItem)
+ relaySlot.captured.invoke(mockk(), mockk())
+ expectNoEvents()
+ val result = awaitItem()
+ assertEquals(locationTestItem, result.location)
+ }
+ }
+
+ @Test
fun testOnDisconnectClick() =
runTest(testCoroutineRule.testDispatcher) {
val mockConnectionProxy: ConnectionProxy = mockk(relaxed = true)