summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDavid Göransson <david.goransson90@gmail.com>2023-10-02 08:25:15 +0200
committerDavid Göransson <david.goransson90@gmail.com>2023-10-02 16:06:03 +0200
commit23517aa5dda6ba8360a6fa9ce408aa63ae5751ce (patch)
tree7bccfc5398403de5cc4f4fdf02fc12cb7fef5a5b
parent469e0efbec57ce256973d1329f5a616e2234e742 (diff)
downloadmullvadvpn-23517aa5dda6ba8360a6fa9ce408aa63ae5751ce.tar.xz
mullvadvpn-23517aa5dda6ba8360a6fa9ce408aa63ae5751ce.zip
Fix data class issues
-rw-r--r--android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/SelectLocationScreenTest.kt10
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SelectLocationScreen.kt1
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/Relay.kt4
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayCity.kt2
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayCountry.kt2
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayItem.kt2
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayListExtensions.kt23
-rw-r--r--android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayConstraintsUpdate.kt4
-rw-r--r--android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelaySettingsUpdate.kt2
-rw-r--r--android/test/arch/src/test/kotlin/net/mullvad/mullvadvpn/test/arch/classes/DataClassTests.kt15
-rw-r--r--android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiDispatcher.kt3
11 files changed, 41 insertions, 27 deletions
diff --git a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/SelectLocationScreenTest.kt b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/SelectLocationScreenTest.kt
index 4844177b45..106d960d1f 100644
--- a/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/SelectLocationScreenTest.kt
+++ b/android/app/src/androidTest/kotlin/net/mullvad/mullvadvpn/compose/screen/SelectLocationScreenTest.kt
@@ -82,9 +82,13 @@ class SelectLocationScreenTest {
uiState =
SelectLocationUiState.ShowData(
countries =
- DUMMY_RELAY_COUNTRIES.apply {
- this[0].expanded = true
- this[0].cities[0].expanded = true
+ DUMMY_RELAY_COUNTRIES.let {
+ val cities = it[0].cities.toMutableList()
+ val city = cities.removeAt(0)
+ cities.add(0, city.copy(expanded = true))
+ it.toMutableList()[0] =
+ it[0].copy(expanded = true, cities = cities.toList())
+ it
},
selectedRelay = DUMMY_RELAY_COUNTRIES[0].cities[0].relays[0]
),
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SelectLocationScreen.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SelectLocationScreen.kt
index b7f23ea768..fec20ceb18 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SelectLocationScreen.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SelectLocationScreen.kt
@@ -18,7 +18,6 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
-import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.ExperimentalComposeUiApi
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/Relay.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/Relay.kt
index f3c3a3cc7c..9bdb59168b 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/Relay.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/Relay.kt
@@ -12,7 +12,5 @@ data class Relay(
override val type = RelayItemType.Relay
override val hasChildren = false
- override var expanded
- get() = false
- set(_) {}
+ override val expanded = false
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayCity.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayCity.kt
index d1a3332a78..e3693963f8 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayCity.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayCity.kt
@@ -6,7 +6,7 @@ data class RelayCity(
override val name: String,
override val code: String,
override val location: GeographicLocationConstraint,
- override var expanded: Boolean,
+ override val expanded: Boolean,
val relays: List<Relay>
) : RelayItem {
override val type = RelayItemType.City
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayCountry.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayCountry.kt
index d418fd3a4a..3ad1d5962f 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayCountry.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayCountry.kt
@@ -5,7 +5,7 @@ import net.mullvad.mullvadvpn.model.GeographicLocationConstraint
data class RelayCountry(
override val name: String,
override val code: String,
- override var expanded: Boolean,
+ override val expanded: Boolean,
val cities: List<RelayCity>
) : RelayItem {
override val type = RelayItemType.Country
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayItem.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayItem.kt
index f4387e9647..3d38d6b068 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayItem.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayItem.kt
@@ -13,5 +13,5 @@ interface RelayItem {
val locationName: String
get() = name
- var expanded: Boolean
+ val expanded: Boolean
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayListExtensions.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayListExtensions.kt
index 401f03d744..39618f9603 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayListExtensions.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayListExtensions.kt
@@ -122,8 +122,9 @@ fun List<RelayCountry>.filterOnSearchTerm(
// Finally if the city has not already been added to the filtered list, add it, but
// do not expand it yet.
if (relayCity.name.contains(other = searchTerm, ignoreCase = true)) {
- if (filteredCountries.containsKey(relayCountry.code)) {
- filteredCountries[relayCountry.code]?.expanded = true
+ val value = filteredCountries[relayCountry.code]
+ if (value != null) {
+ filteredCountries[relayCountry.code] = value.copy(expanded = true)
} else {
filteredCountries[relayCountry.code] =
relayCountry.copy(expanded = true, cities = cities)
@@ -141,15 +142,23 @@ fun List<RelayCountry>.filterOnSearchTerm(
// if so expand it, if not add it to the filtered list and expand it.
// Finally add the relay to the list.
if (relay.name.contains(other = searchTerm, ignoreCase = true)) {
- if (filteredCountries.containsKey(relayCountry.code)) {
- filteredCountries[relayCountry.code]?.expanded = true
+ val value = filteredCountries[relayCountry.code]
+ if (value != null) {
+ filteredCountries[relayCountry.code] = value.copy(expanded = true)
} else {
filteredCountries[relayCountry.code] =
relayCountry.copy(expanded = true, cities = cities)
}
- val city = cities.find { it.code == relayCity.code }
- city?.let { city.expanded = true }
- ?: run { cities.add(relayCity.copy(expanded = true, relays = relays)) }
+ val cityIndex = cities.indexOfFirst { it.code == relayCity.code }
+
+ // No city found
+ if (cityIndex < 0) {
+ cities.add(relayCity.copy(expanded = true, relays = relays))
+ } else {
+ // Update found city as expanded
+ cities[cityIndex] = cities[cityIndex].copy(expanded = true)
+ }
+
relays.add(relay.copy())
}
}
diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayConstraintsUpdate.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayConstraintsUpdate.kt
index bd5bfb9605..991ae7dbde 100644
--- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayConstraintsUpdate.kt
+++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayConstraintsUpdate.kt
@@ -1,6 +1,6 @@
package net.mullvad.mullvadvpn.model
data class RelayConstraintsUpdate(
- var location: Constraint<LocationConstraint>?,
- var wireguardConstraints: WireguardConstraints?
+ val location: Constraint<LocationConstraint>?,
+ val wireguardConstraints: WireguardConstraints?
)
diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelaySettingsUpdate.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelaySettingsUpdate.kt
index a7d4c0b03d..f8d27f115e 100644
--- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelaySettingsUpdate.kt
+++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelaySettingsUpdate.kt
@@ -3,5 +3,5 @@ package net.mullvad.mullvadvpn.model
sealed class RelaySettingsUpdate {
object CustomTunnelEndpoint : RelaySettingsUpdate()
- data class Normal(var constraints: RelayConstraintsUpdate) : RelaySettingsUpdate()
+ data class Normal(val constraints: RelayConstraintsUpdate) : RelaySettingsUpdate()
}
diff --git a/android/test/arch/src/test/kotlin/net/mullvad/mullvadvpn/test/arch/classes/DataClassTests.kt b/android/test/arch/src/test/kotlin/net/mullvad/mullvadvpn/test/arch/classes/DataClassTests.kt
index 248eef5a10..3fd5eff979 100644
--- a/android/test/arch/src/test/kotlin/net/mullvad/mullvadvpn/test/arch/classes/DataClassTests.kt
+++ b/android/test/arch/src/test/kotlin/net/mullvad/mullvadvpn/test/arch/classes/DataClassTests.kt
@@ -1,17 +1,18 @@
package net.mullvad.mullvadvpn.test.arch.classes
import com.lemonappdev.konsist.api.ext.list.modifierprovider.withDataModifier
-import com.lemonappdev.konsist.api.verify.assert
+import com.lemonappdev.konsist.api.ext.list.properties
+import com.lemonappdev.konsist.api.verify.assertNot
import net.mullvad.mullvadvpn.test.arch.extensions.projectScope
-import org.junit.Ignore
import org.junit.Test
class DataClasses {
- @Ignore("Code needs clean up")
@Test
- fun `data classes use only immutable parameters`() {
- projectScope().classes(includeNested = true).withDataModifier().assert {
- it.properties(includeNested = true).all { property -> property.hasValModifier }
- }
+ fun `data classes use only immutable declarations`() {
+ projectScope()
+ .classes(includeNested = true)
+ .withDataModifier()
+ .properties(includeNested = false, includeLocal = false)
+ .assertNot { it.hasVarModifier }
}
}
diff --git a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiDispatcher.kt b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiDispatcher.kt
index 06f7164034..6a604bb09f 100644
--- a/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiDispatcher.kt
+++ b/android/test/mockapi/src/main/kotlin/net/mullvad/mullvadvpn/test/mockapi/MockApiDispatcher.kt
@@ -8,7 +8,10 @@ import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_ACCESS_TOKEN
import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_DEVICE_NAME
import net.mullvad.mullvadvpn.test.mockapi.constant.DUMMY_ID
import net.mullvad.mullvadvpn.test.mockapi.constant.LOG_TAG
+import net.mullvad.mullvadvpn.test.mockapi.util.accessTokenJsonResponse
+import net.mullvad.mullvadvpn.test.mockapi.util.accountInfoJson
import net.mullvad.mullvadvpn.test.mockapi.util.currentUtcTimeWithOffsetZero
+import net.mullvad.mullvadvpn.test.mockapi.util.deviceJson
import okhttp3.mockwebserver.Dispatcher
import okhttp3.mockwebserver.MockResponse
import okhttp3.mockwebserver.RecordedRequest