summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
Diffstat (limited to 'android')
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/repository/ChangelogRepository.kt12
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/StringExtensions.kt2
-rw-r--r--android/app/src/test/kotlin/net/mullvad/mullvadvpn/repository/ChangelogRepositoryTest.kt38
3 files changed, 49 insertions, 3 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/repository/ChangelogRepository.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/repository/ChangelogRepository.kt
index 3e8150bf97..2a4b639725 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/repository/ChangelogRepository.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/repository/ChangelogRepository.kt
@@ -2,9 +2,12 @@ package net.mullvad.mullvadvpn.repository
import android.content.SharedPreferences
import net.mullvad.mullvadvpn.util.IChangelogDataProvider
+import net.mullvad.mullvadvpn.util.trimAll
private const val MISSING_VERSION_CODE = -1
private const val NEWLINE_CHAR = '\n'
+private const val SPACE_STRING = " "
+private const val BULLET_POINT_CHAR = '-'
private const val LAST_SHOWED_CHANGELOG_VERSION_CODE = "last_showed_changelog_version_code"
class ChangelogRepository(
@@ -18,7 +21,10 @@ class ChangelogRepository(
fun setVersionCodeOfMostRecentChangelogShowed(versionCode: Int) =
preferences.edit().putInt(LAST_SHOWED_CHANGELOG_VERSION_CODE, versionCode).apply()
- fun getLastVersionChanges(): List<String> {
- return dataProvider.getChangelog().split(NEWLINE_CHAR).filter { it.isNotEmpty() }
- }
+ fun getLastVersionChanges(): List<String> =
+ dataProvider
+ .getChangelog()
+ .split(BULLET_POINT_CHAR)
+ .map { it.split(NEWLINE_CHAR).trimAll().joinToString(SPACE_STRING).trim() }
+ .filter { it.isNotEmpty() }
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/StringExtensions.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/StringExtensions.kt
index f0cf46978b..adc64ec41e 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/StringExtensions.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/StringExtensions.kt
@@ -12,3 +12,5 @@ fun String.appendHideNavOnPlayBuild(isPlayBuild: Boolean): String =
fun String.removeHtmlTags(): String =
Html.fromHtml(this, HtmlCompat.FROM_HTML_MODE_LEGACY).toString()
+
+fun List<String>.trimAll() = map { it.trim() }
diff --git a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/repository/ChangelogRepositoryTest.kt b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/repository/ChangelogRepositoryTest.kt
new file mode 100644
index 0000000000..4df5c101a7
--- /dev/null
+++ b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/repository/ChangelogRepositoryTest.kt
@@ -0,0 +1,38 @@
+package net.mullvad.mullvadvpn.repository
+
+import android.content.SharedPreferences
+import io.mockk.every
+import io.mockk.mockk
+import net.mullvad.mullvadvpn.lib.common.test.assertLists
+import net.mullvad.mullvadvpn.util.IChangelogDataProvider
+import org.junit.jupiter.api.Test
+
+class ChangelogRepositoryTest {
+
+ private val mockedPreferences: SharedPreferences = mockk()
+ private val mockDataProvider: IChangelogDataProvider = mockk()
+
+ private val changelogRepository =
+ ChangelogRepository(preferences = mockedPreferences, dataProvider = mockDataProvider)
+
+ @Test
+ fun `when given a changelog text should return a list of correctly formatted strings`() {
+ // Arrange
+ val testChangelog =
+ "- Added very nice new feature with a very long descriptive message\n" +
+ " about how it works...\n" +
+ "- Fixed super bad leak."
+ val expectedResult =
+ listOf(
+ "Added very nice new feature with a very long descriptive message about how it works...",
+ "Fixed super bad leak."
+ )
+ every { mockDataProvider.getChangelog() } returns testChangelog
+
+ // Act
+ val result = changelogRepository.getLastVersionChanges()
+
+ // Assert
+ assertLists(expectedResult, result)
+ }
+}